簡體   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