[英]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 應該對這種情況有用。 例如,
創建函數 y=x+1 y=lambda x:x+1
調用函數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.