Оператор **распаковки может использоваться для передачи kwargs от одной функции к kwargs другой функции. Рассмотрим этот код: (кажется, что в комментариях нельзя использовать новые строки) def a(**kw): print(kw)и def b(**kw): a(kw). Этот код вызовет ошибку, поскольку kwargs на самом деле является словарем и будет интерпретироваться как обычный аргумент dictтипа. Вот почему изменение def b(**kw): a(kw)на def b(**kw): a(**kw)распакует kwи устранит ошибки.
Benj
10
Как указывали другие, вы можете делать то, что хотите, передав диктат. Есть разные способы составить диктант. Тот, который сохраняет keyword=valueстиль, который вы пытались сделать, - это использовать встроенный dict :
keywords = dict(keyword1 ='foo', keyword2 ='bar')
Обратите внимание на универсальность dict; все это дает одинаковый результат:
ах, я не обращал внимания. Сейчас должно быть лучше.
David Z
3
Поэтому, когда я пришел сюда, я искал способ передать несколько ** kwarg в одной функции - для дальнейшего использования в других функциях. Потому что это, что неудивительно, не работает:
def func1(**f2_x,**f3_x):...
С помощью некоторого собственного "экспериментального" кодирования я пришел к очевидному способу этого:
Ответы:
Да. Вы делаете это так:
Запуск этого в Python подтверждает, что они дают идентичные результаты:
источник
**
распаковки может использоваться для передачи kwargs от одной функции к kwargs другой функции. Рассмотрим этот код: (кажется, что в комментариях нельзя использовать новые строки)def a(**kw): print(kw)
иdef b(**kw): a(kw)
. Этот код вызовет ошибку, поскольку kwargs на самом деле является словарем и будет интерпретироваться как обычный аргументdict
типа. Вот почему изменениеdef b(**kw): a(kw)
наdef b(**kw): a(**kw)
распакуетkw
и устранит ошибки.Как указывали другие, вы можете делать то, что хотите, передав диктат. Есть разные способы составить диктант. Тот, который сохраняет
keyword=value
стиль, который вы пытались сделать, - это использовать встроенный dict :Обратите внимание на универсальность
dict
; все это дает одинаковый результат:источник
Вы имеете в виду диктат? Что вы можете:
источник
Поэтому, когда я пришел сюда, я искал способ передать несколько ** kwarg в одной функции - для дальнейшего использования в других функциях. Потому что это, что неудивительно, не работает:
С помощью некоторого собственного "экспериментального" кодирования я пришел к очевидному способу этого:
Это печатает, как ожидалось:
источник
python 3.5
Foo(**arg1, **arg2)