Как вызов функции с использованием словаря работает в python

Чтобы вызвать функцию с помощью словаря, мы используем следующий код:

def f1():
    print ("One")

def f2():
    print ("Two")

def f3():
    print ("Three")

dict = {1: f1, 2: f2, 3: f3}

dict[1]()

Как на самом деле работает последняя строка dict[1]()?


person Asmit Nayak    schedule 09.06.2018    source источник
comment
dict[1] это f1. Таким образом, выполнение dict[1]() выполняет f1().   -  person khelwood    schedule 09.06.2018
comment
После того, как вы создадите свой dict, сделайте следующее: print(dict[1]), вы увидите, что вы получите что-то вроде строк: <function f1 at 0x101d22e18>. Это в значительной степени ваша невостребованная функция. Чтобы на самом деле вызвать это, вы делаете (), и вы увидите ожидаемый результат.   -  person idjaw    schedule 09.06.2018
comment
класс NoneType (объект) | Определенные здесь методы: | | __хэш__(...) | x.__hash__() ‹==› hash(x) | | __repr__(...) | x.__repr__() ‹==› repr(x)   -  person Eddwin Paz    schedule 09.06.2018
comment
@eddwinpaz Это очень сбивает с толку читателя. Если вы хотите предоставить ответ, демонстрирующий код, опубликуйте ответ. Написать это в комментариях очень сложно.   -  person idjaw    schedule 09.06.2018


Ответы (1)


Функции в Python — это объекты первого класса. Это означает, что функции — это объекты, которые можно отправлять как параметры, их можно хранить в структурах данных и с ними можно делать то же, что и с простыми объектами. Вы можете прочитать о них здесь.

person Tudor Plugaru    schedule 09.06.2018
comment
Вы хотите добавить что-то к эффекту комментария @khelwood о том, что dict[1] is f1, поэтому вызов dict[1]() означает f1() - person smci; 10.06.2018