Istnieją trzy typy argumentów, które może zaakceptować funkcja Pythona: standard, zmienna (*args) i słowo kluczowe (**kwargs). Argumenty standardowe są najprostsze, ale mają ograniczoną funkcjonalność. Z drugiej strony *args i **kwargs umożliwiają uelastycznienie funkcji poprzez akceptację zmiennej liczby danych wejściowych.

Wybrany typ przekazywania argumentów zależy od charakteru funkcji i preferowanego stylu programowania.

Podstawowe funkcje w Pythonie

Aby zrozumieć, jak działają dwa zmienne argumenty w funkcjach Pythona, należy najpierw zrozumieć, dlaczego istnieją. Prosta funkcja deklaruje stałą liczbę anonimowych argumentów, jak na przykład:

definitywniedodatek(a, b, c):
zwrócić a + b + c

Ta funkcja działa dobrze, ale jest miejsce na ulepszenia. Największym problemem jest to, że obsługuje tylko dwa argumenty, więc może zsumować tylko dwie liczby. A jeśli chcesz dodać dwie lub cztery liczby? Ta funkcja Ci na to nie pozwoli. Przekazanie większej lub mniejszej liczby argumentów, niż akceptuje funkcja, spowoduje wystąpienie błędu TypeError.

instagram viewer

Oczywiście możesz utworzyć więcej funkcji, aby akceptować różną liczbę argumentów. Ale to jest niewygodne i wcale nie będzie się dobrze skalować. Będziesz także musiał utworzyć nową funkcję za każdym razem, gdy będziesz chciał obsłużyć nową liczbę danych wejściowych.

Tutaj pojawiają się argumenty zmiennych i argumenty słów kluczowych. Używając *args i **kwargs, możesz zdefiniować elastyczne funkcje, które mogą przyjmować zmienną liczbę danych wejściowych.

Co to jest *args w Pythonie?

Główną ideą *args w Pythonie jest umożliwienie przekazywania zmiennej liczby danych wejściowych do funkcji. Przydaje się to w różnych zastosowaniach. Na przykład pomyśl o programie kalkulatora, w którym chcesz dać użytkownikowi możliwość dodania dwóch lub więcej liczb i zwrócenia sumy.

Zauważ, że args to tylko nazwa zmiennej; to * jest ważne. Możesz użyć dowolnej prawidłowej nazwy jako argumentu zmiennej, o ile dołączysz *.

Jak używać *args

Możesz zmodyfikować funkcję addnum, aby pobierała zmienną liczbę danych wejściowych w następujący sposób:

definitywniedodatek(*argumenty):
suma = 0

dla liczba w argumenty:
suma = suma + liczba

zwrócić całkowity

Powyższy fragment kodu używa pętli for do iteracji przez dostarczone dane wejściowe.

Następnie możesz wywołać funkcję addnum ze zmiennymi argumentami i będzie działać bez zgłaszania błędu:

wydrukować(dodatek(10, 1, 12, 12, 4, 54, 5)) ## zwraca 98
wydrukować(dodatek(14, 54, 5)) # zwraca 73
wydrukować(dodatek(10, 5)) # zwraca 15

Co to jest **kwargs w Pythonie?

Chociaż zarówno *args, jak i **kwargs pozwalają nam przekazać zmienną liczbę danych wejściowych do funkcji, ta ostatnia jest specyficzna dla argumentów słów kluczowych. Jeśli nie wiesz, argumenty ze słowami kluczowymi to po prostu fantazyjne nazwy dla argumentów z nazwą.

Inną wyjątkową cechą **kwargs jest to, że Python reprezentuje wartość jako słownik.

Jak używać **kwargs

Podobnie jak *args, podwójna gwiazdka jest ważna; możesz użyć dowolnego słowa jako nazwy parametru. Oto przykład użycia **kwargs w Pythonie:

definitywniefrekwencja_tygodniowa(**dni powszednie):
łączna liczba_uczestników = 0

dlauczestnicywdni powszednie.wartości():
total_attendees = total_attendees + uczestnicy

zwrócić ogół_uczestników

wydrukować(cotygodniowa_obecność (poniedziałek = 265, wtorek = 698, środa = 365, czwartek = 463, piątek = 234)) # zwraca 2025
wydrukować(cotygodniowa_obecność (poniedziałek = 265, piątek = 234)) # zwraca 499
wydrukować(cotygodniowa_obecność (środa = 365, czwartek = 463, piątek = 234)) # zwraca 1062

Powyższy fragment kodu również używa pętli for, ale tym razem z wbudowaną w Pythonie metodą values(). Ta metoda zwraca obiekt widoku wszystkich wartości w słowniku. Metoda values() pozwala pętla przez słownik Pythona bez kłopotów.

Użyj zmiennych argumentów, aby uczynić swoje funkcje Pythona elastycznymi

Argumenty funkcji są przydatne, ale niektóre funkcje mogą skorzystać na przyjęciu zmiennej liczby argumentów. Nazwane argumenty słów kluczowych mogą sprawić, że kod będzie bardziej czytelny i łatwiejszy w użyciu. Powinieneś przyjąć argumenty *args i **kwargs Pythona. Są dość proste w użyciu, a dzięki nim możesz uelastycznić swoje funkcje i programy.

Mamy nadzieję, że wykonując powyższe kroki i fragmenty kodu, możesz teraz używać zmiennych słów kluczowych i argumentów niebędących słowami kluczowymi dla swoich funkcji.