有什么更Python的方式做到这一点?
try:
a = foo() or b
except AttributeError:
a = b
我想将a设置为函数foo的返回,但是如果foo返回None或引发AttributeError异常,那么我希望将a设置为b.
解决方法:
正如Gennady Kandaurov指出的那样:您需要测试不是有效的foo()的“有效”返回值(如0,[],(),…):
try:
a = foo() if foo() is not None else b
except AttributeError:
a = b
根据foo的实现细节(无论是昂贵的还是有副作用的),您可能只想调用一次:
try:
f = foo()
a = f if f is not None else b
except AttributeError:
a = b