为变量分配函数

ste*_*tla 52 python

假设我有一个功能

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).

  • 作为一流物体的功能,*哦是啊*. (4认同)
  • @geekkid:值得注意的是****任何**对象都可以像一个函数一样"可调用".您所要做的就是定义对象的`__call __()`方法. (3认同)
  • @semjaavria 当然,方法以同样的方式工作 - 尝试一下。 (2认同)
  • @seeker `x()` 显式调用该函数。“x”是一个返回函数“x”的表达式。“x()”是一个返回调用函数“x”结果的表达式。`y = x()` 是将函数调用的结果赋值给 `y`,`y = x` 是将函数调用的结果赋值给 `y`。它出现在作业中的事实并不意味着“x()”意味着不同的东西。 (2认同)

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)


cob*_*bie 9

当你执行y=x()时,实际上是将y分配给调用函数对象的结果,x并且函数的返回值为None.python中的函数调用是使用().要进行分配x to y,您可以y像调用x函数对象x一样y=x调用y,并使用调用函数y()


Acc*_*ion 8

语法

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。


Pen*_*hao 5

lambda 对于这种情况应该有用。例如,

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

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