我正在寻找等同于以下手写函数的标准函数(运算符、装饰器):
def defaulted(func, defaultVal):
try:
result = func()
except:
result = defaultVal
return result
谢谢!
请您参考如下方法:
stdlib 中没有类似的东西(据我所知)。一方面,这是不好的做法:您应该永远使用裸except。 (相反,指定要捕获的异常;这样,您就不会捕获所有内容!)
这是一个装饰器:
>>> def defaultval(error, value):
... def decorator(func):
... def defaulted(*args, **kwargs):
... try:
... return func(*args, **kwargs)
... except error:
... return value
... return defaulted
... return decorator
...
>>> @defaultval(NameError, "undefined")
... def get_var():
... return name
...
>>> get_var()
'undefined'
