2009-10-13 18 views

Odpowiedz

49

Wystarczy użyć func(**some_dict) to nazwać. To jest udokumentowane na section 4.7.4 of python tutorial.

Zauważ, że samodict jest nie przekazywane do funkcji. Zostanie utworzona nowa kopia, więc some_dict is not kwargs.

+0

_ "Utworzono nowy egzemplarz" _ - Gdzie znajdę oficjalną dokumentację tego zachowania? – jan

5

func(**mydict)

to będzie oznaczać kwargs = mydict wewnątrz funkcji

wszystkie klucze mydict musi być ciągi

7

To nie jest 100% jasne pytanie, ale jeśli chcesz zdać dict się przez kwargs, po prostu sprawiają, że dict część innego dict, tak:

my_dict = {}      #the dict you want to pass to func 
kwargs = {'my_dict': my_dict } #the keyword argument container 
func(**kwargs)      #calling the function 

Wtedy można złapać my_dict w funkcji:

def func(**kwargs): 
    my_dict = kwargs.get('my_dict') 

lub ...

def func(my_dict, **kwargs): 
    #reference my_dict directly from here 
    my_dict['new_key'] = 1234 

Używam tego drugiego, gdy mam ten sam zestaw opcji przekazywanych do różnych funkcji, ale niektóre funkcje używają tylko niektórych opcji (mam nadzieję, że ma to sens ...). Ale jest oczywiście milion sposobów, aby to osiągnąć. Jeśli rozwiążesz problem, prawdopodobnie pomożemy ci lepiej.

0

dla Pythona 3.6 wystarczy umieścić ** przed nazwą słowniku

def lol(**kwargs): 
    for i in kwargs: 
     print(i) 

my_dict = { 
    "s": 1, 
    "a": 2, 
    "l": 3 
} 

lol(**my_dict) 
Powiązane problemy