我必须编写下面的函数,以便在尝试将字符串解析为整数时能够优雅地失败。我可以想象 Python 内置了这样的功能,但我找不到它。如果没有,是否有一种不需要单独函数的更为 Python 化的方法来实现这一点?
def try_parse_int(s, base=10, val=None):
try:
return int(s, base)
except ValueError:
return val
我最终使用的解决方案是修改@sharjeel 的回答。下面的内容在功能上是完全相同的,但是我认为更具可读性。
def ignore_exception(exception=Exception, default_val=None):
"""Returns a decorator that ignores an exception raised by the function it
decorates.
Using it as a decorator:
@ignore_exception(ValueError)
def my_function():
pass
Using it as a function wrapper:
int_try_parse = ignore_exception(ValueError)(int)
"""
def decorator(function):
def wrapper(*args, **kwargs):
try:
return function(*args, **kwargs)
except exception:
return default_val
return wrapper
return decorator