Blog JSystems - uwalniamy wiedzę!

Szukaj
Animacja **kwargs - argumenty nazwane w słowniku
**kwargs pakuje argumenty nazwane (klucz=wartość) w słownik

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
Szkolenie Python od podstaw, przez analizę danych, do machine learning w JSystems

Ten kurs daje Ci solidne podstawy Pythona. Jeśli chcesz pójść dalej i pod okiem trenera dojść od pierwszej linijki kodu do własnego modelu uczenia maszynowego, sprawdź nasze pięciodniowe szkolenie Python od podstaw, przez analizę danych, do machine learning. Pierwsze trzy dni to Python w praktyce: typy i kolekcje, instrukcje warunkowe i pętle, funkcje, moduły i pakiety, pliki tekstowe, usługi sieciowe oraz praca z bazą PostgreSQL. Czwarty dzień to analiza danych w pandas (wczytywanie CSV, TSV i XLS, filtrowanie, agregacje, statystyki) i wizualizacja w Matplotlib, Seaborn oraz Plotly. Piąty dzień to uczenie maszynowe w scikit-learn: regresja liniowa i logistyczna, drzewa decyzyjne, las losowy, XGBoost, walidacja predykcji, dobór hiperparametrów i przeciwdziałanie przeuczeniu. Szkolenie ma terminy gwarantowane, czyli odbywa się niezależnie od wielkości grupy.

Szkolenie Python od podstaw, przez analizę danych, do machine learning

To szkolenie może być dofinansowane dla Ciebie z KFS lub BUR.

★★★★★Średnia ocena naszych szkoleń w Google: 5/5

Najczęściej zadawane pytania

Do czego służy **kwargs w Pythonie?
Wyrażenie z dwiema gwiazdkami stosujesz, gdy chcesz przekazać do funkcji zestaw argumentów nazwanych w postaci klucz równa się wartość. Nazwy argumentów stają się kluczami, a wewnątrz funkcji poruszasz się po nich jak po słowniku.
Czym różni się **kwargs od *args?
W **kwargs argumenty mają nazwy, które stają się kluczami w słowniku i możesz się do nich odwoływać po nazwie. W *args argumenty nie mają nazw i traktowane są jak pozycyjna sekwencja wartości.
Jak połączyć zwykły argument z **kwargs?
Zwykłe argumenty musisz wymienić przed **kwargs w definicji funkcji. Wtedy przekazana wartość trafia do nazwanego argumentu, a pozostałe pary klucz wartość zostają zebrane w słowniku kwargs.
W jakiej postaci **kwargs udostępnia przekazane argumenty?
Wszystkie przekazane argumenty nazwane trafiają do zwykłego słownika. Możesz po nim iterować, odczytując kolejne klucze oraz przypisane im wartości, na przykład żeby zapisać je do pliku w formacie CSV.

Komentarze (0)

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

Brak komentarzy...