Blog JSystems - z miłości do programowania

**kwargs



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

Przyjdź do nas na szkolenie z języka Python! Mamy szereg szkoleń w ofercie, od podstawowych po aplikacje webowe z użyciem Django, analizę danych, tesowanie, machine learning i wiele innych.
Sprawdź dostępne szkolenia Python
Zapisz się do newslettera aby otrzymywać najnowsze świeżynki pojawiające się na blogu!