Сообщить об ошибке.

Хранение функций в структурах данных

Так как функции являются объектами первого класса, их можно хранить в структурах данных, как и в случае с другими объектами. Например, вы можете добавить функцию в список:

def hello(name):
    return f'Hello {name}.'

>>> lst = [hello, str.lower, str.upper]
>>> lst
# [<function hello at 0x7fb66b1f5730>, 
# <method 'lower' of 'str' objects>, 
# <method 'upper' of 'str' objects>]

Доступ к объектам функций, хранящимся внутри списка, работает так же, как и с любым другим типом объектов:

>>> for item in lst:
...     print(item('World'), item)
...
# Hello World. <function hello at 0x7fb66b1f5730>
# world <method 'lower' of 'str' objects>
# WORLD <method 'upper' of 'str' objects>

Можно вызвать объект функции, хранящийся в списке, не назначая его переменной. Другими словами вызвать результирующий объект функции в пределах одного выражения:

>>> lst[0]('World')
# Hello World.