कोड के इस टुकड़े में, 'फॉर' परिणाम का उपयोग क्यों नहीं किया जाता है 'StopIteration' या 'अप' लूप सभी अपवादों को फँसाने और फिर चुपचाप बाहर निकलने का उपयोग क्यों करता है? किस मामले में, हमारे पास बाहरी 'वापसी' क्यों है ?? या raise StopIteration
के कारण: return None
है? return None
:अगला 'स्टॉपइटरेशन' क्यों बढ़ाता है, लेकिन 'के लिए' सामान्य वापसी करता है?
#!/usr/bin/python3.1
def countdown(n):
print("counting down")
while n >= 9:
yield n
n -= 1
return
for x in countdown(10):
print(x)
c = countdown(10)
next(c)
next(c)
next(c)
मान लिया जाये कि StopIteration
से शुरू हो रहा जा रहा है। जेनरेटरएक्सिट जेनरेट कब होता है?
def countdown(n):
print("Counting down from %d" % n)
try:
while n > 0:
yield n
n = n - 1
except GeneratorExit:
print("Only made it to %d" % n)
तो मैं स्वयं एक कार्य करें:
c = countdown(10)
c.close() #generates GeneratorExit??
जो मामले में कारण है कि मैं एक ट्रैस नहीं दिखाई देता?
यह भी ध्यान दें, क्योंकि इटेटरेटर का मूल्यांकन करते समय केवल अपवाद को पकड़ लिया जाएगा। अगर यह लूप के शरीर के भीतर उठाया जाता है तो यह इसे पकड़ नहीं पाएगा। –
@ जोनासविएलिकी: उस व्याख्या को हटाने के लिए वाक्य को थोड़ा बढ़ाया। :-) –