python - variable - Passando una lista di kwargs?




python variable number of arguments (3)

Posso passare una lista di kwargs a un metodo per brevità? Questo è quello che sto tentando di fare:

def method(**kwargs):
    #do something

keywords = (keyword1 = 'foo', keyword2 = 'bar')
method(keywords)

Come altri hanno sottolineato, puoi fare ciò che vuoi passando un ditt. Ci sono vari modi per costruire un dict. Uno che conserva lo stile keyword=value che hai provato è quello di usare il dict built-in:

keywords = dict(keyword1 = 'foo', keyword2 = 'bar')

Nota la versatilità di dict ; tutti questi producono lo stesso risultato:

>>> 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
>>> 

Intendi un dittico? Certo che puoi:

def method(**kwargs):
    #do something

keywords = {keyword1: 'foo', keyword2: 'bar'}
method(**keywords)

Sì. Lo fai in questo modo:

def method(**kwargs):
  print kwargs

keywords = {'keyword1': 'foo', 'keyword2': 'bar'}
method(keyword1='foo', keyword2='bar')
method(**keywords)

L'esecuzione di questo in Python conferma che questi producono risultati identici:

{'keyword2': 'bar', 'keyword1': 'foo'}
{'keyword2': 'bar', 'keyword1': 'foo'}






kwargs