如何在python中定义匿名函数呢?在python中,bahaviour应该在定义时依赖于局部变量的值,并且还接受参数
示例:
def callback(val1, val2):
print "{0} {1}".format(val1, val2)
i = 0
f0 = lambda x: callback(i, x)
i = 1
f1 = lambda x: callback(i, x)
f0(8) # prints "1, 8: but I'd like "0, 8" (value of 'i' when f0 was defined)
f1(8) # prints "1, 8"
如果不将我的回调打包到它自己的一个类中,这样的事情是可能的吗?在
你可以通过functools.partial公司名称:
你可以创建一个函数来创建一个函数。
partial
是另一个选项,正如其他人提到的那样。在python中使用functools.partial的闭包
{cdda>在这个时刻,就像是一个的值。当它被调用时不评估它。在
仅包装部分参数
Yes partial将允许您包装任意数量的参数,剩余的arg和kwarg可以传递给结果partial对象,这样它的行为就像调用原始包装函数一样。。。在
^{2}$实际上,您已经将
callback(val1, val2)
包装成callback(val2)
,其中val1
已经作为闭包包含。在使用lambda
如果您真的想知道如何使用lambda闭包来实现这个目的,那么您可以看到为什么它变得难看并且更倾向于使用部分闭包。。。在
必须将scope变量包装到外部函数作用域中,然后在内部lambda函数中引用该范围。大笑。在
异常的回溯:部分函数与lambda函数与嵌套函数
内因与外因外因外因外因外因外因外因外因外因外因外因外因外因外因外因外因外因外因外因外因外因外因外因外因外因外因外因外因外因外因外因外因外因外因外因外因外因外因外因外因外因。请记住,我指的是函数闭包。functools.partial修复了当包装函数引发异常时将得到的回溯。。。在
考虑一下这个版本,它将除法提高到零:
正常外部/内部关闭
lambda闭包
现在是functools.partial
相关问题 更多 >
编程相关推荐