假设我有一个功能
def x():
print(20)
Run Code Online (Sandbox Code Playgroud)
现在我想将函数分配给一个名为的变量y,这样如果我使用y它,它会x再次调用该函数.如果我只是做分配y = x(),它会返回None.
Gar*_*tty 90
你根本就没有调用这个函数.
>>>def x():
>>> print(20)
>>>y = x
>>>y()
20
Run Code Online (Sandbox Code Playgroud)
括号告诉你调用的函数蟒蛇,所以当你把它们放在那里,它调用的功能,并指定y值返回的x(在这种情况下None).
Lev*_*von 12
将函数分配给变量时,不使用(),而只使用函数的名称.
在你给你的情况下def x(): ...,silly_var你可以做变量:
silly_var = x
Run Code Online (Sandbox Code Playgroud)
然后你可以调用该函数
x()
Run Code Online (Sandbox Code Playgroud)
要么
silly_var()
Run Code Online (Sandbox Code Playgroud)
当你执行y=x()时,实际上是将y分配给调用函数对象的结果,x并且函数的返回值为None.python中的函数调用是使用().要进行分配x to y,您可以y像调用x函数对象x一样y=x调用y,并使用调用函数y()
语法
def x():
print(20)
Run Code Online (Sandbox Code Playgroud)
基本相同x = lambda: print(20)(幕后有一些差异,但对于大多数实际目的,结果相同)。
语法
def y(t):
return t**2
Run Code Online (Sandbox Code Playgroud)
基本上与y= lambda t: t**2. 当您定义一个函数时,您正在创建一个将该函数作为其值的变量。在第一个示例中,您设置x为 function lambda: print(20)。所以x现在指的是那个函数。 x()不是函数,而是函数的调用。在python中,函数只是一种变量,通常可以像任何其他变量一样使用。例如:
def power_function(power):
return lambda x : x**power
power_function(3)(2)
Run Code Online (Sandbox Code Playgroud)
这将返回 8.power_function是一个返回函数作为输出的函数。当它被调用时3,它返回一个对输入进行立方的函数,所以当在输入上调用该函数时2,它返回 8。你可以这样做cube = power_function(3),现在cube(2)将返回 8。