Что именно передается в качестве аргумента, если мы передаем Python имя функции? - PullRequest
1 голос
/ 21 июня 2020

Недавно я описывал свой код своему учителю 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 действительно нет указателей. Я пытался понять это, но не мог найти четкого ответа. Итак, что это такое? Ссылка, объект или что-то еще?

Заранее спасибо.

Ответы [ 2 ]

2 голосов
/ 21 июня 2020

Функции - это первоклассные объекты в python, и поэтому вы можете передавать их в функции и помещать их в списки, словари и т.д. c. Они передаются как ссылки на объекты.

0 голосов
/ 21 июня 2020

Вы передаете имя, привязанное к объекту. Вы можете привязать несколько имен к одному и тому же объекту, как в этом примере:

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

Если вы вызываете функцию с параметром, вы создаете другое имя (имя аргумента), связанное с переданным объектом.

В вашем случае функция map_list принимает все, что вызывается с помощью (). Это означает, что вы можете передать все, что реализовало метод __call__(). Это, конечно, также относится к функции.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...