繁体   English   中英

将函数分配给变量

[英]Assigning a function to a variable

假设我有一个功能

def x():
    print(20)

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

您根本不调用该函数。

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

括号告诉 Python 您正在调用该函数,因此当您将它们放在那里时,它会调用该函数并为y分配x返回的值(在本例中为None )。

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

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

silly_var = x

然后你可以调用这个函数

x()

或者

silly_var()

当您执行y=x()时,您实际上是将 y 分配给调用函数对象x的结果,并且该函数的返回值为None python 中的函数调用是使用()执行的。 要将x to y以便您可以像调用 x 一样调用y ,您可以像y=x一样将函数对象x分配给 y 并使用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 应该对这种情况有用。 例如,

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

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

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

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

在本例中,乐趣 = x。

def x():
   print(20)
   return 10

y = x
y()
print(y)

给出输出

20
<function x at 0x7fc548cd3040>

所以它实际上并没有将 x() 返回的值赋给变量 y。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM