Есть ли способ использовать функции как значения словаря? - PullRequest
1 голос
/ 12 июля 2020

Мне нужно выполнить несколько операций, получая данные от пользователя о том, какие операции должны выполняться в виде строк. Итак, я подумал об использовании словаря, в котором имя функции будет ключом, а значением будет сама функция. Я также хочу передать аргументы функциям. Есть ли способ сделать это? Вот что я хочу сделать:

a = [] # an empty list
inp = input() # which function to apply?
arg = int(input()) # the argument corresponding to the function.

# a dictionary mapping all the functions to the names
func_dict = {"append":a.append(), "pop":a.pop(), "extend": a.extend()} 

Я знаю, что это не сработает, я также хочу указать аргумент, введенный пользователем. Есть ли способ сделать это?

Спасибо.

1 Ответ

7 голосов
/ 12 июля 2020

Просто удалите () из функции:

a = [] # an empty list
inp = input() # which function to apply?
arg = int(input()) # the argument corresponding to the function.

# a dictionary mapping all the functions to the names
func_dict = {"append":a.append, "pop":a.pop, "extend": a.extend} 

Таким образом вы получите ссылку на функцию, а не ее результат.

EDIT: Затем для вызова функция, используйте func_dict['append'](arg). Обратите внимание, что это решение может потерпеть неудачу, если у вас есть функции с другим количеством аргументов, поэтому вам, возможно, придется проверить это перед вызовом ваших функций.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...