चेतावनी: चरम नौसिखिया प्रश्नपाइथन में कोई फ़ंक्शन इसके मानों को याद करने के बाद कैसे याद करता है?
मैं एक नुस्खा के रूप में कार्यों के बारे में सोच रहा था। मेरी दुनिया में, कार्यक्रम एक नुस्खा बॉक्स है और कुछ व्यंजनों (कार्यों) अन्य व्यंजनों (अन्य कार्यों) के लिए कॉल करते हैं। प्रोसेसर रैम में निर्देश लिखकर और उनके माध्यम से काम करके मास्टर रेसिपी को निष्पादित करना शुरू कर देता है। नाश्ते के crepes की तरह। आप जूलिया चाइल्ड्स से नाश्ते के क्रीप्स रेसिपी को बुलाते हैं। आपको एक बार क्रेप बल्लेबाज बनाना है। फिर, जब भी आपके पास क्रेप बल्लेबाज होता है, तो आप इसे क्रेप्स बनाते हैं। समवर्ती रूप से, आप विभिन्न फल तैयार कर सकते हैं जो आप कर सकते हैं।
ठीक है, मैं स्पष्ट रूप से समझ में नहीं आता। मैंने pythontutor.com के माध्यम से प्रोजेक्ट यूलर Problem 2 (4 मिलियन से भी कम फाइबोनैकी संख्याओं का योग) के लिए पाइथन विकी समाधान चलाया। और मुझे लगता है कि मेरे साथ कुछ हुआ। ऐसा लगता है कि जब भी आप एक नुस्खा स्वीकार करते हैं, तो आप केवल उसी प्रोसेसर का उपयोग नहीं करते हैं, आपको उस फ़ंक्शन पर काम करने के लिए कुछ बर्तनों के साथ एक gnome मिलता है। बर्तन चर होते हैं, gnome अपनी नुस्खा का काम करता है, और, अगर कॉलिंग फ़ंक्शन वापसी मूल्यों की अपेक्षा कर रहा था, तो gnome कॉलर को उन बर्तनों की सामग्री दिखाता है। कॉलर फिर वापस जा सकता है, कुछ और चीजें समझ सकता है, और अपने कॉलर को रिटर्न वैल्यू दिखा सकता है।
तो आइए कहें अल अल बॉब को क्रेप्स बनाने के लिए कहते हैं। बॉब बल्लेबाज बनाता है और चार्ली को उन्हें पकाते हैं। चार्ली एक क्रेप बनाती है, बॉब को उस क्रेप परोसती है, बॉब इसे अल को देती है, और चार्ली वापस जाती है। कौन अभी भी मौजूद है! अल इस बात से अनजान है कि बॉब ने चार्ली को रसोई में रखा है, लेकिन चार्ली उस पहले क्रेप को बनाने के बाद भी, वह रसोईघर में है, जानता है कि एक क्रेप कैसे बनाना है, और जानता है कि उसने कितना क्रेप बल्लेबाज छोड़ा है। भले ही वह पहले ही क्रेप वापस कर चुका है।
क्या कोई इसे मेरे लिए साफ़ करने में मदद कर सकता है?
यहाँ अजगर विकी
def fib():
x,y = 0,1
while True:
yield x
x,y = y, x+y
def even(seq):
for number in seq:
if not number % 2:
yield number
def under_a_million(seq):
for number in seq:
if number > 1000000:
break
yield number
print sum(even(under_a_million(fib())))
से कोड है और यहाँ http://pythontutor.com/visualize.html
आपका भ्रम समझ में आता है। कार्यक्रम 'उपज' कीवर्ड को छोड़कर, आपको लगता है कि उन्हें किस प्रकार (सॉर्ट) करना चाहिए। जैसा कि आप वर्णन करते हैं, 'उपज', सिंक के नीचे एक gnome स्टोर करता है। जबकि आप सीख रहे हैं तो आप 'उपज' से बचने का विकल्प चुन सकते हैं, या आप इसे विशेष रूप से पढ़ना चुन सकते हैं। –
आपके पास * जेनरेटर * हैं। जनरेटर हर बार बर्फ पर डालते हैं जब वे 'उपज' कीवर्ड में आते हैं, जो उनके ऊपर लूपिंग पर नियंत्रण लौटाते हैं। –
http://www.jeffknupp.com/blog/2013/02/14/drastically-improve-your-python-understanding-pythons-execution-model/ – Torxed