के पेड़ के साथ चारों ओर खेलने, मैं इस व्यवहार पर ठोकर खाई:खाली जनरेटर
def descendants (self):
return #or "pass" or "42"
जाहिर None
देता है।
दूसरी ओर तरफ:
def descendants (self):
return
yield 42
एक जनरेटर जो कुछ भी अर्जित करता है (वास्तव में व्यवहार मैं पत्र-गांठ के लिए आवश्यक) देता है।
क्या कोई मुझे बता सकता है कि यहां हुड के नीचे क्या हो रहा है?
yield 42
पहुंच योग्य नहीं होना चाहिए? (मुझे लगता है कि कोई फ़ंक्शन जनरेटर या "सामान्य" फ़ंक्शन संकलित समय पर किया जाता है, इस पर आधारित है कि इसमें एक या विभिन्न yield
कथन शामिल हैं, चाहे वे पहुंच योग्य हों या नहीं। लेकिन यह अंधेरे में सिर्फ एक शॉट है ।)
संदर्भ निम्न है: मेरे पास पेड़ हैं और प्रत्येक नोड या तो पेड़ या पत्ता है। अब मैं एक नोड के सभी सन्तान उत्पन्न करना चाहते हैं:
class Leaf (Node):
@property
def descendants (self):
return
yield 42
class Tree (Node):
@property
def descendants (self):
for child in self.children:
yield child
yield from child.descendants
मैं आमतौर पर केवल 'वापसी()' करता हूं, क्योंकि यह खाली जनरेटर के समान कार्य करता है। – U2EF1