这段代码的工作原理是什么?它来自梯度中的“数据科学划痕”第8章。为什么我需要在另一个函数中包装一个函数?有一种更可读的方式来实现这种执行处理?这是对它的解释。python中的函数装饰器安全
某些步长可能会导致我们的函数无效输入。所以,我们需要创建一个返回无穷大(这绝不应该是最低的任何东西)为无效输入“安全应用”功能:
def safe(f):
"""return a new function that's the same as f,
except that it outputs infinity whenever f produces an error"""
def safe_f(*args, **kwargs):
try:
return f(*args, **kwargs)
except:
return float('inf')
return safe_f
请更清楚这部分的代码是不明确给你。它是无限价值的回报吗? “try”和“except”是什么?是否是'f()'的参数?这是为什么这个函数在你的大代码中工作吗? –
我对try和except以及解包参数有所了解。我理解函数背后的目的而不是实现。我想一个示例函数调用会帮助我理解正在发生的事情,但书中没有。 – Char
您在下面的答案中有2个很好的用法示例,但请记住'安全'装饰器并不总是您想要做的,有时例外情况会更多地提供一个'inf'值 –