80

假设我有一个功能

def x():
    print(20)

现在我想将该函数分配给一个名为 的变量y,这样如果我使用y它,它就会再次调用该函数x。如果我只是简单地做作业y = x(),它就会返回None

4

6 回答 6

127

您根本不调用该函数。

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

括号告诉python你正在调用函数,所以当你把它们放在那里时,它会调用函数并分配返回y值(在这种情况下是)。xNone

于 2012-04-27T16:13:16.880 回答
15

当您将函数分配给变量时,您使用 (),而只是使用函数的名称。

在你的情况下 givendef x(): ...和 variablesilly_var你会做这样的事情:

silly_var = x

然后你可以调用这个函数

x()

或者

silly_var()
于 2012-04-27T16:14:29.360 回答
11

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

于 2012-04-27T16:39:52.140 回答
8

语法

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。

于 2018-11-16T17:52:39.553 回答
4

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

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

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

于 2018-04-11T04:39:47.277 回答
0

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

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

在本例中,乐趣 = x。

于 2020-12-16T09:16:16.090 回答