嘿,我试图了解lambda函数在python中是如何工作的。 我对此有一个大致的了解,但我不太理解解释器在以下代码中的工作方式:
def foo(f):
return lambda y:(f(y+2))
print(foo(lambda x:x**2)(3))
解释器如何知道f
是x:x**2
?
是本地绑定还是解释器值f
然后将lambda函数返回到全局环境?
答案 0 :(得分:0)
有两个关键要点可以帮助您掌握这里发生的事情。
首先,在python中,几乎所有东西都是一个对象。 Even functions
“可调用对象是可以接受某些参数(也称为参数)并可能返回对象(通常是包含多个对象的元组)的对象。
一个函数是Python中最简单的可调用对象,但是还有其他一些,例如类或某些类实例。 “
其余的只是函数执行的基本参数/参数处理。
def add_two(b):
return b + 2
add_two(7)
a = 3
add_two(a)
在这里,在函数调用中为b分配了对象7,它与b = 7相同。当我们在内部传递a时,同样的事情再次发生。 b = a,它将b与a所引用的 object (值3。请记住一个粗略的规则,所有事物都是一个对象)相关联。当您传递函数 object 时,也会发生同样的事情。
希望有帮助。