将函数赋给变量

假设我有一个函数

def x():
print(20)

现在我想把函数赋给一个名为 y的变量,这样如果我使用 y,它就会再次调用函数 x。如果我只是做 y = x(),它返回 None

167936 次浏览

只是不调用函数。

>>> def x():
>>>     print(20)
>>> y = x
>>> y()
20

括号告诉 Python 您正在调用该函数,因此当您将它们放在那里时,它将调用该函数并通过 x(在本例中是 None)将值 回来了赋给 y

将函数赋给变量时,不要使用() ,但只使用函数的名称。

在给定 def x(): ...和变量 silly_var的情况下,可以这样做:

silly_var = x

然后你可以调用这个函数

x()

或者

silly_var()

当执行 y=x()时,实际上是将 y 赋给调用函数对象 x的结果,并且函数的返回值为 None。Python 中的函数调用使用 ()执行。为了分配 x to y,这样你就可以像调用 x一样调用 y,你将函数对象 x 分配给 y,就像 y=x一样,然后使用 y()调用函数

Λ 应该对这个案子有用。 比如说,

  1. 创建函数 y = x + 1 Y = lambda x: x + 1

  2. 调用函数 Y (1) 然后返回 2

语法

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。

我不知道重命名一个函数并使用新名称调用它的价值/用处是什么。但是使用字符串作为函数名,例如从命令行获得的 已经一些值/有用性:

import sys
fun = eval(sys.argv[1])
fun()

在本例中,fun = x。