这样做有什么比这更好的方式?
try:
a = foo() or b
except AttributeError:
a = b
我想将a
设置为函数foo
的返回值,但如果foo
返回None
或引发AttributeError
异常,则我希望a
设置为b
。
答案 0 :(得分:4)
正如Gennady Kandaurov所指出的那样:你需要测试foo()
的'有效'返回值,这些值不是'真实的'(0
,[]
,{{ 1}},...):
()
取决于try:
a = foo() if foo() is not None else b
except AttributeError:
a = b
的实施细节(无论是昂贵还是有副作用),您可能只想调用一次:
foo