Wyrażenia z dwoma gwiazdkami (**) stosujemy gdy do funkcji chcemy przekazać zestaw argumentów klucz wartość. W przeciwieństwie do *args argumentom przypiszemy nazwy, a nazwy te staną się kluczem dla wartości. Po argumentach przekazanych w ten sposób poruszamy się jak po słowniku:
def parametr_kwargs( **kwargs):
for k in kwargs:
print(k,kwargs[k])
parametr_kwargs(dodatkowy=48, nastepny=111)
Wynik działania na konsoli:
dodatkowy 48
nastepny 111
"k" stanowi tutaj klucz i w kolejnych "k" będziemy mieli nazwy parametrów jakie zostały przekazane, a w kwargs[k] ich wartości. Nieco inna wizualizacja:
def kwargs(**parametry):
print(parametry)
kwargs(param1=1,param2=2,param3=3)
powoduje wyświetlenie na konsoli:
{'param1': 1, 'param2': 2, 'param3': 3}
Jeśli zechcielibyśmy do funkcji przekazać jakieś dodatkowe poza **kwargs parametry to musimy wymienić je jako pierwsze:
def kwargs_argument(argument,**kwargs):
print(argument)
print(kwargs)
kwargs_argument(argument=10,param1='Andrzej',param2='Klusiewicz')
Wynik działania na konsoli:
10
{'param1': 'Andrzej', 'param2': 'Klusiewicz'}
Przykład zastosowania **kwargs, funkcja która umieszcza w pliku o przekazanej nazwie dowolne parametry w formacie pliku csv:
def zapisz_parametry_do_pliku(nazwa_pliku,**parametry):
plik=open(nazwa_pliku,mode='w', encoding='utf-8')
for p in parametry:
plik.write(f'{p};{parametry[p]}\n')
plik.close()
zapisz_parametry_do_pliku('mojplik.csv',parametr1='wartość 1',parametr2=2)
Zawartość pliku ‘mojplik.csv’:
parametr1;wartość 1
parametr2;2
Komentarze (0)
Brak komentarzy...