簡體   English   中英

如果我們傳遞 Python function 名稱,究竟傳遞了什么作為參數?

[英]What is exactly passed as an argument if we pass Python function name?

最近我在向我的 Uni 老師描述我的代碼,大概是這樣的:

def f(x):
    return x*x

def map_list(function, list):
    return [function(element) for element in list]

map_list(f, [1,2,3])

我告訴過在map_list(f, [1,2,3])中, f參數是指向 function 的指針,這顯然是錯誤的,因為 PYthon 中確實沒有指針。 我試圖弄清楚,但我找不到任何明確的答案。 那么,它是什么? 參考,object,還是別的什么?

提前致謝。

函數是 python 中的一等對象,因此您可以將它們傳遞給函數並將它們放置在列表、字典等中。它們作為 object 引用傳遞。

您傳遞的是一個綁定到 object 的名稱。 您可以將多個名稱綁定到同一個 object,如下例所示:

x = []
y = x # x and y are two names bind to the same object

如果您使用參數調用 function,您將創建另一個名稱(參數的名稱)綁定到傳遞的 object。

在您的情況下, function map_list接受可使用()調用的所有內容。 這意味着你可以傳遞任何實現了__call__()方法的東西。 當然,function 也是如此。

暫無
暫無

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

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