我總是通過該事實惱火:返回無或元組和拆包
$ 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
這是一種令人討厭的。有沒有一種技巧可以改善這種情況(例如,如果將第一個和第二個都設置爲無,而沒有返回(無,無))或者針對像我提交的那種情況的最佳設計策略的建議? *變量可能?
ooooh ...這我沒有考慮。非常「完美」的方法,但聰明。 – 2009-08-13 22:11:20
我不同意這是perl-ish。 'x或y'是說'(x?x:y)'或者'(如果x然後是x else y)'或者'(如果不是x然後是y)''或者其他想要解釋它的一種非常pythonic的方式。 – 2009-08-13 22:40:10
好的,剛剛完成了「隨聲附和」的「無論或死()」典型的perl短語。 – 2009-08-13 23:52:38