खोल मैं हमेशा इस तथ्य से नाराज हूँ:कोई नहीं या एक टपल रिटर्निंग और
$ cat foo.py
def foo(flag):
if flag:
return (1,2)
else:
return None
first, second = foo(True)
first, second = foo(False)
$ python foo.py
Traceback (most recent call last):
File "foo.py", line 8, in <module>
first, second = foo(False)
TypeError: 'NoneType' object is not iterable
तथ्य यह है कि सही तरीके से मुसीबतों मैं लेखन त्रुटि को पकड़ने के लिए या
की तरह कुछ है करने के लिए या तो बिना अनपैक करने मेंvalues = foo(False)
if values is not None:
first, second = values
जो कि कष्टप्रद है। क्या इस स्थिति में सुधार करने के लिए कोई चाल है (उदाहरण के लिए फू रिटर्निंग (कोई नहीं, कोई नहीं) के बिना किसी को भी पहले और दूसरे को सेट करने के लिए या मेरे द्वारा पेश किए जाने वाले मामलों के लिए सर्वोत्तम डिज़ाइन रणनीति के बारे में कोई सुझाव नहीं है? * चर संभवतः?
ओहोह ... मैंने इस पर विचार नहीं किया। बहुत "perlish" दृष्टिकोण, लेकिन चालाक। –
मैं इस बारे में असहमत हूं कि यह perl-ish है। 'x या y' '(x? x: y)' या '(यदि x तो x else y)' या' (यदि x नहीं तो y) है या फिर भी आप इसे समझा देना चाहते हैं तो एक बहुत ही पाइथोनिक तरीका है । –
ठीक है, बस "जो भी या मर()" ठेठ perl वाक्यांश "के साथ" गाओ "से बाहर काम किया। –