4 ответов:
да. Вы делаете это так:
def method(**kwargs): print kwargs keywords = {'keyword1': 'foo', 'keyword2': 'bar'} method(keyword1='foo', keyword2='bar') method(**keywords)запуск этого в Python подтверждает, что они дают одинаковые результаты:
{'keyword2': 'bar', 'keyword1': 'foo'} {'keyword2': 'bar', 'keyword1': 'foo'}
как указывали другие, вы можете делать то, что хотите, передавая дикт. Существуют различные способы построения диктанта. Тот, который сохраняет
keyword=valueстиль, который вы пытались использовать дикт встроенный:keywords = dict(keyword1 = 'foo', keyword2 = 'bar')обратите внимание на универсальность
dict; все они дают один и тот же результат:>>> kw1 = dict(keyword1 = 'foo', keyword2 = 'bar') >>> kw2 = dict({'keyword1':'foo', 'keyword2':'bar'}) >>> kw3 = dict([['keyword1', 'foo'], ['keyword2', 'bar']]) >>> kw4 = dict(zip(('keyword1', 'keyword2'), ('foo', 'bar'))) >>> assert kw1 == kw2 == kw3 == kw4 >>>
вы имеете в виду дикт? Конечно, вы можете:
def method(**kwargs): #do something keywords = {keyword1: 'foo', keyword2: 'bar'} method(**keywords)
поэтому, когда я пришел сюда, я искал способ передать несколько * * кваргов в одной функции-для последующего использования в дальнейших функциях. Потому что это, что не удивительно, не работает:
def func1(**f2_x, **f3_x): ...С некоторым собственным "экспериментальным" кодированием я пришел к очевидному способу, как это сделать:
def func3(f3_a, f3_b): print "--func3--" print f3_a print f3_b def func2(f2_a, f2_b): print "--func2--" print f2_a print f2_b def func1(f1_a, f1_b, f2_x={},f3_x={}): print "--func1--" print f1_a print f1_b func2(**f2_x) func3(**f3_x) func1('aaaa', 'bbbb', {'f2_a':1, 'f2_b':2}, {'f3_a':37, 'f3_b':69})это печатает как ожидалось:
--func1-- aaaa bbbb --func2-- 1 2 --func3-- 37 69
Comments