WedX - журнал о программировании и компьютерных науках

Как создать список функций для вызова в python

Мой вопрос похож на этот здесь, но я не понимаю.

Как добавить вызов функции в список?

Если бы у меня было примерно 10 команд, и все они служили определенным целям, то их нельзя было бы изменить, но я хотел бы поместить их в список, не вызывая их.

def print_hello():
    print("hello")
command_list=[print_hello()]

Это напечатает только "hello", а затем оставит command_list равным [None].

Как мне сделать так, чтобы когда я набираю command_list[0], он выполнял print_hello()?

28.09.2016

  • Как мне сделать так, чтобы когда я набираю command_list[0], он выполнял print_hello()? – Вряд ли. Подойдет ли command_list[0]()? 28.09.2016
  • Чтобы сделать доступ по индексу вызовом результирующего объекта, вам нужно написать свой собственный список, чтобы __getitem__ вызывал __call__. Или просто поместите функцию в список и вызовите ее, когда вернете, как предлагает @deceze. 28.09.2016
  • print_hello() — это вызов функции, а print_hello wo() — объект функции. Вы хотите сохранить объекты функций в список, поэтому вам нужно добавить их в список без (). Кроме того, вы хотите сделать вызов функции для сохраненных объектов функций, поэтому вам нужно добавить () после элемента списка command_list[0]() 28.09.2016
  • Да, command_list[0]() отлично подойдет. Извините за ужасную формулировку 28.09.2016

Ответы:


1

Если вы хотите добавить его в список, не вызывая их, просто воздержитесь от их вызова:

command_list=[print_hello]

В то время, когда вы хотите позвонить им, позвоните им:

command_list[0]()

Если вы хотите, чтобы что-то произошло, просто выполнив command_list[0], вы можете создать подкласс list и дать ему

def __getitem__(self, index):
    item = list.__getitem__(self, index)
    return item()

(не проверено). Затем операция получения элемента в списках вызывает вызов функции.

28.09.2016
Новые материалы

Как проанализировать работу вашего классификатора?
Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

Работа с цепями Маркова, часть 4 (Машинное обучение)
Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..

Использование машинного обучения и Python для классификации 1000 сезонов новичков MLB Hitter
Чему может научиться машина, глядя на сезоны новичков 1000 игроков MLB? Это то, что исследует это приложение. В этом процессе мы будем использовать неконтролируемое обучение, чтобы..

Учебные заметки: создание моего первого пакета Node.js
Это мои обучающие заметки, когда я научился создавать свой самый первый пакет Node.js, распространяемый через npm. Оглавление Глоссарий I. Новый пакет 1.1 советы по инициализации..

Забудьте о Matplotlib: улучшите визуализацию данных с помощью умопомрачительных функций Seaborn!
Примечание. Эта запись в блоге предполагает базовое знакомство с Python и концепциями анализа данных. Привет, энтузиасты данных! Добро пожаловать в мой блог, где я расскажу о невероятных..

ИИ в аэрокосмической отрасли
Каждый полет – это шаг вперед к великой мечте. Чтобы это происходило в их собственном темпе, необходима команда астронавтов для погони за космосом и команда технического обслуживания..


Для любых предложений по сайту: [email protected]