Blog JSystems - uwalniamy wiedzę!

Szukaj

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)

Musisz być zalogowany by móc dodać komentarz. Zaloguj się przez Google

Brak komentarzy...