Er zijn drie soorten argumenten die een Python-functie kan accepteren: standaard, variabele (*args) en trefwoord (**kwargs). Standaardargumenten zijn het eenvoudigst, maar hebben een beperkte functionaliteit. Aan de andere kant stellen *args en **kwargs je in staat om je functies flexibeler te maken door een variabel aantal inputs te accepteren.

Het type argument-passing dat u kiest, hangt af van de aard van uw functie en uw eigen voorkeursprogrammeerstijl.

Basisfuncties in Python

Om te begrijpen hoe de twee variabele argumenten in Python-functies werken, is het essentieel om te begrijpen waarom ze in de eerste plaats bestaan. Een eenvoudige functie declareert een vast aantal anonieme argumenten als volgt:

zekerbijvoeglijk naamwoord(a, b,c):
opbrengst a + b + c

Deze functie werkt prima, maar er is ruimte voor verbetering. Het grootste probleem is dat het slechts twee argumenten verwerkt, dus het kan maar twee getallen optellen. Wat als u twee of vier cijfers wilt toevoegen? Met deze functie kunt u dit niet doen. Het doorgeven van meer of minder argumenten dan de functie accepteert, leidt tot een TypeError.

instagram viewer

Natuurlijk kunt u meer functies maken om verschillende aantallen argumenten te accepteren. Maar dat is onhandig en zal helemaal niet goed schalen. U moet ook elke keer dat u een nieuw aantal invoer wilt verwerken een nieuwe functie maken.

Dat is waar variabele argumenten en trefwoordargumenten binnenkomen. Met *args en **kwargs kunt u flexibele functies definiëren die een variabel aantal ingangen kunnen aannemen.

Wat is *args in Python?

Het belangrijkste idee achter *args in Python is dat je een variabel aantal inputs aan je functie kunt doorgeven. Dit komt van pas in verschillende toepassingen. Denk bijvoorbeeld aan een rekenprogramma waarbij je de gebruiker de mogelijkheid wilt geven om twee of meer getallen op te tellen en de som terug te geven.

Merk op dat args slechts een variabelenaam is; het is de * die belangrijk is. U kunt elke geldige naam gebruiken voor uw variabele argument, zolang u de *.

Hoe *args. te gebruiken

U kunt de addnum-functie als volgt wijzigen om een ​​variabel aantal ingangen te nemen:

zekerbijvoeglijk naamwoord(*argumenten):
totaal = 0

voor aantal in argumenten:
totaal = totaal + aantal

opbrengst totaal

Het codefragment hierboven gebruikt een for-lus om de geleverde invoer te herhalen.

Je kunt dan de addnum-functie aanroepen met variabele argumenten en het zal werken zonder een fout te veroorzaken:

afdrukken(toevoeging (10, 1, 12, 12, 4, 54, 5)) ## retourneert 98
afdrukken(toevoeging (14, 54, 5)) # retourneert 73
afdrukken(toevoeging (10, 5)) # retourneert 15

Wat is **kwargs in Python?

Hoewel zowel *args als **kwargs ons in staat stellen een variabel aantal inputs door te geven aan functies, is de laatste specifiek voor trefwoordargumenten. Voor het geval je het niet weet, trefwoordargumenten zijn gewoon mooie namen voor argumenten met een naam.

Een ander uniek aspect van **kwargs is dat Python de waarde vertegenwoordigt als een woordenboek.

Hoe **kwargs. te gebruiken

Net als *args is de dubbele asterisk het belangrijkste; u kunt elk woord als parameternaam gebruiken. Hier is een voorbeeld van het gebruik van **kwargs in Python:

zekerwekelijkse_aanwezigheid(**doordeweekse dagen):
totaal aantal deelnemers = 0

vooraanwezigenindoordeweekse dagen.waarden():
total_attendees = totaal_attendees + aanwezigen

opbrengst totaal_aanwezigen

afdrukken(wekelijkse_aanwezigheid (maandag = 265, dinsdag = 698, woensdag = 365, donderdag = 463, vrijdag = 234)) # retourneert 2025
afdrukken(wekelijkse_aanwezigheid (maandag = 265, vrijdag = 234)) # retourneert 499
afdrukken(wekelijkse_aanwezigheid (woensdag = 365, donderdag = 463, vrijdag = 234)) # retourneert 1062

Het bovenstaande codefragment gebruikt ook een for-lus, maar deze keer met de ingebouwde methode Values() van Python. Die methode retourneert een view-object van alle waarden in het woordenboek. Met de methode values() kunt u: loop door een Python-woordenboek zonder gedoe.

Gebruik variabele argumenten om uw Python-functies flexibel te maken

Functieargumenten zijn handig, maar sommige functies kunnen baat hebben bij het accepteren van een variabel aantal argumenten. Benoemde trefwoordargumenten kunnen uw code leesbaarder en gebruiksvriendelijker maken. Je moet de argumenten *args en **kwargs van Python omarmen. Ze zijn vrij eenvoudig te gebruiken en daarmee kunt u uw functies en programma's flexibeler maken.

Door de bovenstaande stappen en codefragmenten te volgen, hopen we dat u nu variabele trefwoord- en niet-trefwoordargumenten voor uw functies kunt gebruiken.