假设我有一个函数:
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
)。
__call__()
方法即可。 - Li-aung Yipx()
明确地调用函数。 x
是一个返回函数 x
的表达式。 x()
是返回调用函数 x
的结果的表达式。 y = x()
将函数调用的结果分配给 y
,y = x
将函数赋值给 y
。它出现在赋值中并不意味着 x()
有不同的含义。 - Gareth Lattydef x(): ...
的函数以及一个名为silly_var
的变量,您需要像这样执行操作:silly_var = x
然后你可以通过以下方式调用该函数
x()
或者silly_var()
当你执行 y=x()
时,实际上是将变量 y 赋值为调用函数对象 x
的结果,并且该函数的返回值为 None
。在Python中,函数调用使用括号 ()
。要将 x
分配给 y
,以便您可以像调用 x
一样调用 y
,请将函数对象 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
设置为函数 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
。
def x():
print(20)
return 10
y = x
y()
print(y)
输出结果
20
<function x at 0x7fc548cd3040>
因此,它实际上没有将 x() 返回的值分配给变量 y。
我不知道重命名一个函数并使用新名称调用它的价值/有用性是什么。但是,将字符串用作函数名称,例如从命令行获取,具有一定的价值/有用性:
import sys
fun = eval(sys.argv[1])
fun()
lambda
应该可以工作,请查看下面的答案。 - Pengju Zhao