簡體   English   中英

python函數重新定義

[英]python function redefine

我想做這樣的事情:

f = lambda x: None

x = [f]

def f(n):
    return n

print x[0](2)

預期結果為2 ,但實際上為None

我知道可以用類來解決,但是沒有它們也可以解決嗎?

在這里,您將創建一個匿名函數並將其添加到列表中。 現在有兩個引用指向lambda。 盡管您定義了另一個具有相同名稱f的函數,但這不會影響列表中的引用,因為它指向了lambda。

您想在這里實現什么?

您將在列表中存儲對該函數的引用x而不是其名稱。

你可以做類似的事情

f = lambda x: None
x = ['f']
def f(n):
    return n

print globals()[x[0]](2)

但這有點“不好”。 也許您可以解釋為什么要嘗試這樣做,我們可以為您找到更好的方法。

您可以將f設置為全局變量:

全局f
f =λx:x + 1

x(1)

出:2

f =λx:x + 2

x(1)

出:3

嗯,這很容易(:。函數和其他對象一樣都是對象。

x = [f]

要么

x[0] = f

重新定義f之后?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM