O **operador de desempacotamento pode ser usado para passar kwargs de uma função para os kwargs de outra função. Considere este código: (novas linhas não parecem ser permitidas nos comentários) def a(**kw): print(kw)e def b(**kw): a(kw). Este código irá gerar um erro porque kwargs é na verdade um dicionário e será interpretado como um argumento regular do dicttipo. É por isso que mudar def b(**kw): a(kw)para def b(**kw): a(**kw)irá desempacotar kwe resolver os erros.
Benj
10
Como outros apontaram, você pode fazer o que quiser passando um ditado. Existem várias maneiras de construir um dicionário. Um que preserva o keyword=valueestilo que você tentou é usar o dict integrado:
keywords = dict(keyword1 ='foo', keyword2 ='bar')
Observe a versatilidade de dict; todos eles produzem o mesmo resultado:
ah, eu não estava prestando atenção. Deve estar melhor agora.
David Z
3
Então, quando cheguei aqui, estava procurando uma maneira de passar vários ** kwargs em uma função - para uso posterior em outras funções. Porque isso, não surpreendentemente, não funciona:
def func1(**f2_x,**f3_x):...
Com alguma codificação 'experimental' própria, cheguei à maneira óbvia de como fazê-lo:
Respostas:
Sim. Você faz assim:
Executá-lo em Python confirma que eles produzem resultados idênticos:
fonte
**
operador de desempacotamento pode ser usado para passar kwargs de uma função para os kwargs de outra função. Considere este código: (novas linhas não parecem ser permitidas nos comentários)def a(**kw): print(kw)
edef b(**kw): a(kw)
. Este código irá gerar um erro porque kwargs é na verdade um dicionário e será interpretado como um argumento regular dodict
tipo. É por isso que mudardef b(**kw): a(kw)
paradef b(**kw): a(**kw)
irá desempacotarkw
e resolver os erros.Como outros apontaram, você pode fazer o que quiser passando um ditado. Existem várias maneiras de construir um dicionário. Um que preserva o
keyword=value
estilo que você tentou é usar o dict integrado:Observe a versatilidade de
dict
; todos eles produzem o mesmo resultado:fonte
Você quer dizer um dict? Certamente você pode:
fonte
Então, quando cheguei aqui, estava procurando uma maneira de passar vários ** kwargs em uma função - para uso posterior em outras funções. Porque isso, não surpreendentemente, não funciona:
Com alguma codificação 'experimental' própria, cheguei à maneira óbvia de como fazê-lo:
Isso é impresso conforme o esperado:
fonte
python 3.5
oFoo(**arg1, **arg2)
é possível