ब्रेनबर्न का विस्तार उत्तर: break
सौभाग्य से प्रसारित नहीं होगा। break
वर्तमान पाश, अवधि को तोड़ना है। यदि आप किसी ईवेंट को प्रचारित करना चाहते हैं, तो आपको raise
अपवाद होना चाहिए। हालांकि, लूप को तोड़ने के लिए अपवाद उठाना लूप तोड़ने और आपके कोड को तोड़ने का एक अच्छा तरीका है।
KISS! सबसे सरल पाश में सीधे हालत की जांच करने के
def my_condition(x):
return x == 4
for i in xrange(100):
if my_condition(i): break
print i
, तो किसी कारण से, आप एक अपवाद प्रचार करने के लिए चाहते हैं, तो आप इसे इस
# exception example
for i in xrange(100):
if i == 4: raise Exception("Die!")
print i
तरह का उपयोग किया जाएगा के रूप में उल्लेख किया है, यह है वास्तव में बदसूरत डिज़ाइन। कल्पना कीजिए कि आप इस अपवाद को पकड़ने के लिए भूल जाते हैं, या आप MyBreakException
को Exception
से अपने प्रकार बदल सकते हैं और कोड की try/except
उच्च भाग में कहीं न कहीं इसे बदलने के लिए भूल जाते हैं ...
जनरेटर उदाहरण तो इसके लाभों पर है, यह अपने कोड अधिक functional style बनाता है (जो मैं presonally पसंद है)
# generator example
def conditional_generator(n, condition):
for i in xrange(n):
if condition(i):
break
else:
yield i
for i in conditional_generator(100, my_condition):
print i
... जो takewhile
के समान है, eumiro
स्रोत
2012-12-21 09:18:45
एक जनरेटर जो ब्रेक तर्क को समाहित करता है? – ThunderEX
@ थंडरएक्स - कुछ 'itertools.takewhile' जैसे – eumiro
@ थंडरएक्स: हाँ, कुछ समय के समान। मेरा संपादित उत्तर देखें। – BrenBarn