为变量分配函数

时间:2012-04-27 16:12:13

标签: python

假设我有一个功能

def x():
    print(20)

现在我想将函数分配给名为y的变量,这样如果我使用y,它会再次调用函数x。如果我只是执行作业y = x(),则会返回None

6 个答案:

答案 0 :(得分:82)

您根本不会调用该函数。

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

括号告诉python您正在调用该函数,因此当您将它们放在那里时,它会调用该函数并通过y将{{1>}值返回分配给x在这种情况下是None)。

答案 1 :(得分:11)

当你为一个变量分配一个函数时,使用()而只是函数的名称。

在给定def x(): ...和变量silly_var的情况下,您可以执行以下操作:

silly_var = x

然后您可以使用

调用该函数
x()

silly_var()

答案 2 :(得分:6)

执行y=x()时,实际上是将y分配给调用函数对象x的结果,函数的返回值为None。 python中的函数调用是使用()执行的。要分配x to y,您可以像y一样调用x,将函数对象x分配给y,如y=x,并使用y() <调用函数/ p>

答案 3 :(得分:1)

语法

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()不是函数,它是函数的 call 。在python中,函数只是变量的一种,通常可以像其他变量一样使用。例如:

def power_function(power):
      return  lambda x : x**power
power_function(3)(2)

这将返回8。power_function是一个将函数作为输出返回的函数。在3上调用它时,它返回一个对输入进行立方体处理的函数,因此在输入2上调用那个函数时,它返回8。您可以执行{{ 1}},现在cube = power_function(3)将返回8。

答案 4 :(得分:0)

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

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

在当前情况下,fun = x。

答案 5 :(得分:-1)

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

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

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