假设我有一个功能
def x():
print(20)
现在我想将该函数分配给一个名为 的变量y
,这样如果我使用y
它,它就会再次调用该函数x
。如果我只是简单地做作业y = x()
,它就会返回None
。
假设我有一个功能
def x():
print(20)
现在我想将该函数分配给一个名为 的变量y
,这样如果我使用y
它,它就会再次调用该函数x
。如果我只是简单地做作业y = x()
,它就会返回None
。
您根本不调用该函数。
>>>def x():
>>> print(20)
>>>y = x
>>>y()
20
括号告诉python你正在调用函数,所以当你把它们放在那里时,它会调用函数并分配返回的y
值(在这种情况下是)。x
None
当您将函数分配给变量时,您不使用 (),而只是使用函数的名称。
在你的情况下 givendef x(): ...
和 variablesilly_var
你会做这样的事情:
silly_var = x
然后你可以调用这个函数
x()
或者
silly_var()
当您执行时,y=x()
您实际上是将 y 分配给调用函数对象的结果,x
并且该函数的返回值为None
. python 中的函数调用是使用()
. 要进行分配x to y
,您可以y
像将x
函数对象 x 分配给 y 一样y=x
调用并使用调用函数y()
语法
def x():
print(20)
基本相同x = lambda: print(20)
(引擎盖下存在一些差异,但对于大多数实际目的,结果相同)。
语法
def y(t):
return t**2
基本相同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)
这返回 8.power_function
是一个返回函数作为输出的函数。当它被调用时3
,它返回一个对输入进行立方处理的函数,所以当在输入上调用该2
函数时,它返回 8。你可以这样做cube = power_function(3)
,现在cube(2)
将返回 8。
lambda 应该对这种情况有用。例如,
创建函数 y=x+1
y=lambda x:x+1
调用函数
y(1)
然后返回2
。
我不知道重命名函数并用新名称调用它的价值/用处是什么。但是使用字符串作为函数名,例如从命令行获得的,有一些价值/用处:
import sys
fun = eval(sys.argv[1])
fun()
在本例中,乐趣 = x。