从python中的antoher函数返回lambda函数

时间:2018-11-10 13:06:28

标签: python lambda

嘿,我试图了解lambda函数在python中是如何工作的。 我对此有一个大致的了解,但我不太理解解释器在以下代码中的工作方式:

def foo(f):
    return lambda y:(f(y+2))

print(foo(lambda x:x**2)(3))

解释器如何知道fx:x**2?  是本地绑定还是解释器值f然后将lambda函数返回到全局环境?

1 个答案:

答案 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 时,也会发生同样的事情。

希望有帮助。