Python标准模块中是否存在此函数的类似内容?

Ale*_*ter 1 python exception standard-library

我正在寻找一个标准函数(运算符,装饰器),它等同于下面的手写函数:

def defaulted(func, defaultVal):
   try:
      result = func()
   except: 
      result = defaultVal

   return result
Run Code Online (Sandbox Code Playgroud)

谢谢!

Kat*_*iel 5

在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'
Run Code Online (Sandbox Code Playgroud)