Natrag na blog

Korištenje *args i **kwargs parametara u vašem kodu: Python 3 vodič

Korištenje *args i **kwargs parametara u vašem kodu: Python 3 vodič

Uvod

Python je jedan od najpopularnijih programskih jezika na svijetu. U Pythonu, parametri su dio definicija funkcija. Oni vam omogućuju da odredite određene argumente za funkciju. Funkcija može prihvatiti i primijeniti taj argument.

Međutim, u trenutku pisanja koda nije vam moguće znati koji točno slučajevi upotrebe mogu biti implementirani s vašim kodom. Stoga je, radi budućih programera i korisnika vašeg programa, preporučljivo proslijediti varijabilan broj argumenata funkciji. Da biste to učinili, morate koristiti posebne parametre. To su *args i **kwargs. U ovom vodiču ćemo naučiti sve o *args i **kwargs parametrima u Pythonu. Također ćemo naučiti kako poredati argumente i kako ih primijeniti u pozivima funkcija.

Preduvjeti

Kako biste mogli pratiti korake u vodiču, morate pripremiti neke preduvjete. Prvo, morate imati instaliran Python 3 na vašem poslužitelju s aktivnim programskim okruženjem. Također morate imati instaliran program za vaš specifični operacijski sustav (Ubuntu, CentOS, Debian, itd.).

Što je *args i kako radi?

Započnimo s razumijevanjem kako *args radi. Verzija parametra s jednom zvjezdicom koristi se za slanje popisa argumenata varijabilne duljine bez ključnih riječi funkcijama. Imajte na umu da je zvjezdica najvažniji element u tom parametru.

Da bismo bolje razumjeli, razmotrimo primjer. Slijedi tipična funkcija koju možete pronaći u svom kodu, a koja koristi dva argumenta:

Kao što vidite, naši argumenti u gornjoj funkciji su x i y. Prilikom pozivanja funkcije koristit ćete brojeve koji odgovaraju x i y. Recimo da prosljeđujemo cijele brojeve 5 i 4 za x i y redom:

Sada možemo pokrenuti kod:

Izlaz koji ćemo dobiti bit će sljedeći:

Izlaz pokazuje da su cijeli brojevi 5 i 4 pomnoženi. To znači da je funkcija multiply(x, y) radila.

Sada, recimo da na kraju želimo pomnožiti tri broja umjesto samo dva. Nažalost, dodavanje dodatnog broja gornjoj funkciji rezultirat će ovakvom pogreškom:

Stoga, ako pretpostavljate da ćete kasnije možda morati dodati više argumenata, primijenite parametar *args radi vaše praktičnosti. Možete ga koristiti ovako:

Jednostavno smo zamijenili parametre funkcije x i y s *args. Pokretanje ovog koda dat će vam umnožak za svaki pojedini poziv funkcije ovako:

Stoga je *args idealan za korištenje kada želite poslati popise argumenata varijabilne duljine svojoj funkciji. Zbog njegove mogućnosti, možete proslijediti onoliko argumenata koliko želite u pozivima funkcija. Kao takav, ovaj vam parametar omogućuje izgradnju fleksibilnijeg koda koji može prihvatiti veliku količinu varijabilnih argumenata bez ključnih riječi u funkciju.

Što je **kwargs i kako radi?

Zatim imamo verziju parametara s dvostrukom zvjezdicom, a to je **kwargs. Za razliku od prethodnog oblika, ovaj vam parametar omogućuje prosljeđivanje rječnika argumenata varijabilne duljine s ključnim riječima u funkciju. Slično kao i *args, dvostruke zvjezdice su najkritičniji element parametra.

Kao što smo učinili u prethodnom odjeljku, možete dodati onoliko argumenata koliko želite. Razlika je u tome što morate dodijeliti ključne riječi. Kako biste bolje razumjeli, razmotrite sljedeći primjer. Ovdje ćemo započeti ispisivanjem **kwargs argumenata koje želimo proslijediti funkciji:

Sada pozovimo funkciju. Kao što vidite, dodali smo ključne argumente:

Pokretanje programa u ovom trenutku prikazat će vam ovaj izlaz:

Međutim, postoji mogućnost da je vaš tip podataka rječnika neuređen. To uvelike ovisi o verziji Pythona 3 koju koristite. Na primjer, bilo koja verzija nakon Pythona 3.6 daje vam parove ključ-vrijednost po redu. Bilo koja verzija prije toga prikazat će izlaz nasumičnim redoslijedom. Rječnik koji izradite zvat će se kwargs. Imajte na umu da ga možete koristiti i manipulirati njime kao i bilo kojim drugim rječnikom u sustavu. Pogledajmo kako možete staviti **kwargs parametar u veću upotrebu i primjenu.

U sljedećem primjeru pokušat ćemo napraviti novu funkciju koja će pozdraviti rječnik s imenima. Naš ogledni rječnik imat će dva imena:

Pokretanje programa dat će vam ovaj izlaz:

Slično prethodnom primjeru, rječnici se mogu činiti neuređenima. Kao takav, redoslijed imena Casey i Sammy može biti obrnut u nekim slučajevima.

Zatim ćemo funkciji proslijediti dodatne argumente. To će dokazati da možete učiniti da **kwargs prihvati bilo koji broj argumenata koji želite:

Pokretanje programa prikazat će vam ovaj izlaz:

Ovaj izlaz također može biti neuređen. Bez obzira na to, ovi primjeri pokazuju da **kwargs daje vašem programu fleksibilnost za korištenje niza ključnih argumenata.

Kako poredati argumente

Važno je imati na umu zadani redoslijed prilikom slaganja argumenata u funkciji ili pozivu funkcije. On je sljedeći:

  1. Formalni pozicijski argumenti

  2. *args

  3. Ključni argumenti

  4. **kwargs

Recimo da koristite *args i **kwargs s eksplicitnim pozicijskim parametrima. To znači da će vaša funkcija izgledati ovako:

S druge strane, korištenje ovih parametara s imenovanim ključnim parametrima dat će vašoj funkciji sljedeću opću strukturu:

Nepoštivanje zadanog redoslijeda rezultirat će sintaktičkom pogreškom prilikom pokretanja koda. Stoga je najbolje izbjeći tu pogrešku u samom početku.

Kako koristiti *args i **kwargs u pozivima funkcija

Na kraju ćemo vam pokazati kako koristiti oba parametra za prosljeđivanje argumenata u funkcije. Započet ćemo s primjerom koji prikazuje *args:

U ovoj funkciji postoje tri parametra: arg_1, arg_2, i arg_3. Morate stvoriti varijablu i postaviti je na iterabilni objekt. U ovom slučaju, to će biti tuple. Zatim možete proslijediti varijablu u funkciju pomoću sintakse sa zvjezdicom.

Promatrajte izlaz kada pokrenete program pomoću python some_args.py naredbe:

Također je moguće promijeniti program na iterabilnu listu tipa podataka s različitim nazivom varijable. Sljedeći kod kombinira *args s imenovanim parametrom:

Izlaz će biti sljedeći nakon pokretanja programa:

S druge strane, možete primijeniti ključne argumente s **kwargs. Obavezno stvorite varijablu koja je jednaka rječniku. Trebala bi imati 2 para ključ-vrijednost. Evo kako ćemo proslijediti varijablu funkciji s 3 argumenta:

Ponovno upotrijebite python some_kwargs.py naredbu za pokretanje programa:

Zaključak

Do kraja ovog vodiča trebali biste dobro razumjeti što su *args i **kwargs i kako rade. Sada možete primijeniti ove parametre na vlastiti kod kako biste svoj program učinili fleksibilnim za buduće korisnike. Oni su idealni za situacije u kojima ne znate koliko argumenata može biti upotrijebljeno. Samo pripazite na ključne elemente funkcija i parametara.

Na kraju, evo još resursa s našeg bloga koji će vam pomoći da uspješno radite s Pythonom:

Sretno programiranje!

author

Pranay Kapgate

Autor · CloudSigma

Preslav Dobrev je kreativni dizajner u CloudSigma, usredotočen na dosljedan poslovni identitet korištenjem tradicionalnih i inovativnih marketinških kanala. Vješt je u spajanju umjetničke vizije sa strateškim marketingom kako bi stvorio dojmljive brendirane priče.

Komentari

Još nema komentara. Budite prvi.