当函数 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
执行此操作的更 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