Există trei tipuri de argumente pe care o funcție Python le poate accepta: standard, variabilă (*args) și cuvânt cheie (**kwargs). Argumentele standard sunt cele mai simple, dar au o funcționalitate limitată. Pe de altă parte, *args și **kwargs vă permit să vă faceți funcțiile mai flexibile, acceptând un număr variabil de intrări.
Tipul de trecere a argumentelor pe care îl alegeți depinde de natura funcției dvs. și de propriul stil de programare preferat.
Funcții de bază în Python
Pentru a înțelege cum funcționează cele două argumente variabile din funcțiile Python, este esențial să înțelegem de ce există în primul rând. O funcție simplă declară un număr fix de argumente anonime astfel:
defaddnum(a, b, c):
întoarcere a + b + c
Această funcție funcționează bine, dar există loc de îmbunătățire. Cea mai mare problemă este că se ocupă doar de două argumente, deci poate adăuga doar două numere. Dacă doriți să adăugați două sau patru numere? Această funcție nu vă va permite să faceți acest lucru. Trecerea mai multor argumente sau mai puține decât acceptă funcția va duce la o Eroare de tip.
Desigur, puteți crea mai multe funcții pentru a accepta un număr diferit de argumente. Dar asta este incomod și nu se va scala deloc bine. De asemenea, va trebui să creați o nouă funcție de fiecare dată când doriți să gestionați un număr nou de intrări.
Aici intervin argumentele variabile și argumentele cheie. Folosind *args și **kwargs, puteți defini funcții flexibile care pot lua un număr variabil de intrări.
Ce este *args în Python?
Ideea principală din spatele *args în Python este de a vă permite să treceți un număr variabil de intrări funcției dvs. Acest lucru este util în diverse aplicații. De exemplu, gândiți-vă la un program de calculator în care doriți să oferiți utilizatorului posibilitatea de a adăuga două sau mai multe numere și de a returna suma.
Rețineți că args este doar un nume de variabilă; este * care este important. Puteți folosi orice nume valid pentru argumentul dvs. variabilă, atâta timp cât includeți *.
Cum se utilizează *args
Puteți modifica funcția addnum pentru a lua un număr variabil de intrări, după cum urmează:
defaddnum(*args):
total = 0pentru num în argumente:
total = total + num
întoarcere total
Fragmentul de cod de mai sus folosește o buclă for pentru a itera prin intrările furnizate.
Apoi puteți apela funcția addnum cu argumente variabile și va funcționa fără a arunca o eroare:
imprimare(numărul suplimentar(10, 1, 12, 12, 4, 54, 5)) ## returnează 98
imprimare(numărul suplimentar(14, 54, 5)) # returnează 73
imprimare(numărul suplimentar(10, 5)) # returnează 15
Ce este **kwargs în Python?
În timp ce atât *args, cât și **kwargs ne permit să transmitem un număr variabil de intrări la funcții, acesta din urmă este specific argumentelor cuvintelor cheie. În cazul în care nu știți, argumentele cuvintelor cheie sunt doar nume de lux pentru argumente cu un nume.
Un alt lucru unic despre **kwargs este că Python reprezintă valoarea ca un dicționar.
Cum se utilizează **kwargs
La fel ca *args, dublu-asteriscul este bitul important; puteți folosi orice cuvânt ca nume de parametru. Iată un exemplu de utilizare a **kwargs în Python:
defprezența_săptămânală(**zilele saptamanii):
total_participanti = 0pentruparticipanțiînzilele saptamanii.valori():
total_attendees = total_attendees + participanțiîntoarcere total_participanti
imprimare(asistență_săptămânală (luni = 265, marți = 698, miercuri = 365, joi = 463, vineri = 234)) # se întoarce în 2025
imprimare(asistență_săptămânală (luni = 265, vineri = 234)) # returnează 499
imprimare(asistență_săptămânală (miercuri = 365, joi = 463, vineri = 234)) # returnează 1062
Fragmentul de cod de mai sus folosește și o buclă for, dar de data aceasta cu metoda values() încorporată în Python. Această metodă returnează un obiect de vizualizare a tuturor valorilor din dicționar. Metoda values() vă permite treceți în buclă printr-un dicționar Python fara bataie de cap.
Utilizați argumente variabile pentru a face funcțiile dvs. Python flexibile
Argumentele funcției sunt utile, dar unele funcții pot beneficia de pe urma acceptării unui număr variabil de argumente. Argumentele cheie numite pot face codul mai ușor de citit și mai ușor de utilizat. Ar trebui să îmbrățișați argumentele *args și **kwargs ale lui Python. Sunt destul de simplu de utilizat și, cu ajutorul lor, vă puteți flexibiliza funcțiile și programele.
Urmând pașii și fragmentele de cod de mai sus, sperăm că acum puteți utiliza cuvinte cheie variabile și argumente non-cheie pentru funcțiile dvs.