На этом шаге мы рассмотрим особенности организации такого хранения.
Поскольку функции - это объекты первого класса, их можно хранить в структурах данных точно так же, как это делается с другими объектами. Например, вы можете добавить функции в список:
>>> funcs = [bark, str.lower, str.capitalize] >>> funcs [<function yell at 0x0000024F7F60DDC0>, <method 'lower' of 'str' objects>, <method 'capitalize' of 'str' objects>]
Доступ к объектам-функциям, хранящимся внутри списка, осуществляется точно так же, как это происходит с объектом любого другого типа:
>>> for f in funcs: print(f, f('всем привет')) <function yell at 0x0000024F7F60DDC0> ВСЕМ ПРИВЕТ! <method 'lower' of 'str' objects> всем привет <method 'capitalize' of 'str' objects> Всем привет
Хранящийся в списке объект-функцию даже можно вызвать без необходимости сначала присваивать его переменной. Для этого можно выполнить поиск и затем немедленно назвать результирующий "бестелесный" объект-функцию внутри одного-единственного выражения:
>>> funcs[0]('приветище') 'ПРИВЕТИЩЕ!
На следующем шаге мы рассмотрим возможность функций передаваться другим функциям.