如果我们传递 Python 函数名称,作为参数传递的确切内容是什么?



最近我向我的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参数是指向函数的指针,这显然是错误的,因为PYthon中实际上没有指针。我试图弄清楚,但我找不到任何明确的答案。那么,它是什么?引用、对象还是其他东西?

提前谢谢。

函数是 python 中的一等对象,因此您可以将它们传递到函数中并将它们放在列表、字典等中。它们作为对象引用传递。

你传递的是一个绑定到对象的名称。 可以将多个名称绑定到同一对象,如以下示例所示:

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

如果使用参数调用函数,则会创建另一个绑定到传递对象的名称(参数的名称(。

在您的情况下,函数map_list接受所有可调用的内容().这意味着您可以传递任何已实现__call__()方法的内容。当然,函数也是如此。

最新更新