Я хотел бы вызвать функцию в Python, используя словарь.
Вот некоторый код:
d = dict(param='test')
def f(param):
print(param)
f(d)
Это печатает, {'param': 'test'}
но я хотел бы просто напечатать test
.
Я хотел бы, чтобы он работал аналогично для других параметров:
d = dict(p1=1, p2=2)
def f2(p1, p2):
print(p1, p2)
f2(d)
Это возможно?
python
function
dictionary
parameters
keyword
Дэйв Хиллиер
источник
источник
Несколько дополнительных деталей, которые могут быть полезны для понимания (вопросы, которые у меня возникли после прочтения и проверки):
Примеры:
Номер 1: функция может иметь параметры, которые не включены в словарь
Номер 2: Вы не можете переопределить параметр, который уже находится в словаре
Номер 3: в словаре не может быть параметров, которых нет в функции.
Как и было запрошено в комментариях, решением для номера 3 является фильтрация словаря на основе аргументов ключевых слов, доступных в функции:
Другой вариант - принять (и игнорировать) дополнительные kwargs в вашей функции:
Обратите внимание на то, что вы можете использовать позиционные аргументы и списки или кортежи практически так же, как и kwargs, вот более сложный пример, включающий позиционные и ключевые аргументы:
источник
'hello {greeting} {name}'.format( **{'name': 'Andrew', 'greeting': 'Mr'})
В Python это называется «распаковка», и вы можете найти немного об этом в руководстве . Я не согласен с документацией, особенно потому, что это фантастически полезно.
источник
Вот и все - работает просто любой другой итеративный:
источник