Calling Cython C functions from Python -
मेरे पास foo.pyx
नामक एक फाइल है जिसमें निम्नलिखित कार्य हैं:
def add_one (int n): cdef int m = n + 1 वापसी m cdef int c_add_one (int n): वापसी n + 1
मैं यह pyx
फ़ाइल का उपयोग करके cython -a foo.pyx
और उसके बाद कर सकते हैं:
& gt; & gt; & gt; आयात फू & gt; & gt; & gt; Foo.add_one (5) 6> gt; & gt; Foo.c_add_one (5) एट्रिब्यूट त्रुटि: 'मॉड्यूल' ऑब्जेक्ट में कोई विशेषता 'c_add_one' नहीं है
ऐसा लगता है कि मैं अजगर से c_add_one
कॉल नहीं कर सकता cdef
- का उपयोग करके फ़ंक्शन घोषित करने के क्या फायदे हैं? स्पीड : सिथन और सी
cdef
औरcpdef
फ़ंक्शन नियमित फ़ंक्शन से अधिक तेज़ कर सकते हैं। नियमितडीएफ़ फ़ंक्शंस पूर्ण-पूर्ण पायथन ऑब्जेक्ट्स हैं। उन्हें संदर्भ गणना, जीआईएल, आदि की आवश्यकता होती है।
- इनकैप्सुलेशन : यदि किसी फ़ंक्शन को
cdef
घोषित किया गया है, तो इसे पायथन उपयोगकर्ता के सामने नहीं भेजा जाएगा। यह फायदेमंद है यदि फ़ंक्शन का उपयोग सार्वजनिक उपभोग के लिए कभी नहीं किया गया था (उदा। क्योंकि यह उसके मापदंडों की जांच नहीं करता है, या किसी कार्यान्वयन के विवरण से संबंधित है जो कि भविष्य में बदल सकता है)। उपयोगकर्ता अभी भी सी / सिथन के माध्यम से इस पर बाधक बना सकते हैं, लेकिन ऐसा करने से अधिक परेशानियों की अपेक्षा अधिक से अधिक परेशान होगा। इस तरह, यह डबल-अंडरस्कोर नाम मैंकलिंग के समान है। - इनकैप्सुलेशन : यदि किसी फ़ंक्शन को
Comments
Post a Comment