当函数返回None或抛出异常时,使用默认值的Pythonic方法是什么?

时间:2016-12-21 09:10:57

标签: python exception-handling default-value nonetype

这样做有什么比这更好的方式?

try:
    a = foo() or b
except AttributeError:
    a = b

我想将a设置为函数foo的返回值,但如果foo返回None或引发AttributeError异常,则我希望a设置为b

1 个答案:

答案 0 :(得分:4)

正如Gennady Kandaurov所指出的那样:你需要测试foo()的'有效'返回值,这些值不是'真实的'(0[],{{ 1}},...):

()

取决于try: a = foo() if foo() is not None else b except AttributeError: a = b 的实施细节(无论是昂贵还是有副作用),您可能只想调用一次:

foo