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

What is the Pythonic way to use a default value when function returns None or throws exception?

执行此操作的更 pythonic 方法是什么?

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

我想将 a 设置为函数 foo 的 return,但是如果 foo returns None 或者引发了 AttributeError 异常,然后我希望将 a 设置为 b

正如 Gennady Kandaurov 所指出的:您需要测试 foo() 的 'valid' return 值不是 'truthy'(因为 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