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