În acest articol, vom acoperi ceea ce fac ** (stea dublă/asterisc) și * (stea/asterisc) pentru parametrii din Piton , Aici, vom acoperi, de asemenea exemple de args și kwargs în Python. Putem trece un număr variabil de argumente unei funcții folosind simboluri speciale.
Există două simboluri speciale:
*args și **kwargs în Python
Simboluri speciale utilizate pentru transmiterea argumentelor în Python:
- *args (Argumente fără cuvinte cheie)
- **kwargs (Argumente ale cuvintelor cheie)
Notă: Folosim caracterul metalic sau notația * astfel – *args SAU **kwargs – ca argument al funcției noastre atunci când avem îndoieli cu privire la numărul de argumente pe care ar trebui să le transmitem într-o funcție.
Ce este Python *args?
Sintaxa specială *args în definițiile funcțiilor în Python este folosit pentru a transmite un număr variabil de argumente unei funcții. Este folosit pentru a transmite o listă de argumente fără cuvinte cheie, cu lungime variabilă.
- Sintaxa este de a folosi simbolul * pentru a prelua un număr variabil de argumente; prin convenție, este adesea folosit cu cuvântul args.
- Ce *args vă permite să faceți este să luați mai multe argumente decât numărul de argumente formale pe care le-ați definit anterior. Cu *args , orice număr de argumente suplimentare pot fi atașate parametrilor formali actuali (inclusiv zero argumente suplimentare).
- De exemplu, vrem să facem o funcție de multiplicare care să ia orice număr de argumente și să le înmulțească pe toate împreună. Se poate face folosind *args.
- Folosind *, variabila pe care o asociem cu * devine iterabilă, ceea ce înseamnă că puteți face lucruri precum iterați peste ea, rulați unele funcții de ordin superior, cum ar fi harta și filtrul etc.
Exemplul 1:
Program Python pentru a ilustra *args pentru un număr variabil de argumente
piton
def myFun(*argv): for arg in argv: print(arg) myFun('Hello', 'Welcome', 'to', 'techcodeview.com')>
Ieșire:
Hello Welcome to techcodeview.com>
Exemplul 2:
Program Python pentru a ilustra *args cu un prim argument suplimentar
Python3 def myFun(arg1, *argv): print('First argument :', arg1) for arg in argv: print('Next argument through *argv :', arg) myFun('Hello', 'Welcome', 'to', 'techcodeview.com')>
Ieșire:
First argument : Hello Next argument through *argv : Welcome Next argument through *argv : to Next argument through *argv : techcodeview.com>
Ce este Python **kwargs?
Sintaxa specială **kwargs în definițiile funcțiilor din Python este folosit pentru a trece o listă de argumente cu lungime variabilă cu cuvinte cheie. Folosim numele kwargs cu steaua dublă. Motivul este că steaua dublă ne permite să trecem prin argumente ale cuvintelor cheie (și orice număr dintre ele).
- Un argument de cuvânt cheie este în cazul în care furnizați un nume variabilei pe măsură ce o treceți în funcție.
- Se poate gândi la kwargs ca fiind un dicționar care mapează fiecare cuvânt cheie cu valoarea pe care o transmitem alături. De aceea, atunci când repetăm peste kwargs nu pare să existe nicio ordine în care au fost tipărite.
Exemplul 1:
bash for bucla de la 1 la 10
Program Python pentru a ilustra *kwargs pentru un număr variabil de argumente de cuvinte cheie. Aici **kwargs acceptă argumentul cu cheie de lungime variabilă transmis de apelul funcției. for first=’Geeks’ first este cheia, iar ‘Geeks’ este o valoare. în cuvinte simple, ceea ce atribuim este valoare, iar cui îi atribuim este cheia.
Piton def myFun(**kwargs): for key, value in kwargs.items(): print('%s == %s' % (key, value)) # Driver code myFun(first='Geeks', mid='for', last='Geeks')>
Ieșire:
first == Geeks mid == for last == Geeks>
Exemplul 2:
Program Python pentru a ilustra **kwargs pentru un număr variabil de argumente de cuvinte cheie cu un argument suplimentar. La fel, dar o schimbare este trecerea unui argument non-cheie care este acceptabil prin argument pozițional (arg1 în myFun). iar argumentele cuvintelor cheie pe care le transmitem sunt acceptabile de **kwargs. simplu nu?
Piton def myFun(arg1, **kwargs): for key, value in kwargs.items(): print('%s == %s' % (key, value)) # Driver code myFun('Hi', first='Geeks', mid='for', last='Geeks')>
Ieșire:
first == Geeks mid == for last == Geeks>
Folosind atât *args, cât și **kwargs în Python pentru a apela o funcție
Exemplul 1:
Aici, trecem *args și **kwargs ca argument în funcția myFun. Transmiterea *args la myFun înseamnă pur și simplu că transmitem argumentele poziționale și de lungime variabilă care sunt conținute de args. deci, Geeks trec la arg1, pentru trece la arg2, iar Geeks trec la arg3. Când trecem **kwargs ca argument la myFun, înseamnă că acceptă argumente ale cuvintelor cheie. Aici, arg1 este cheia, iar valoarea este Geeks care este transmisă la arg1 și, la fel, pentru și Geeks trec la arg2 și, respectiv, arg3. După ce trecem toate datele, imprimăm toate datele în rânduri.
piton def myFun(arg1, arg2, arg3): print('arg1:', arg1) print('arg2:', arg2) print('arg3:', arg3) # Now we can use *args or **kwargs to # pass arguments to this function : args = ('Geeks', 'for', 'Geeks') myFun(*args) kwargs = {'arg1': 'Geeks', 'arg2': 'for', 'arg3': 'Geeks'} myFun(**kwargs)>
Ieșire:
arg1: Geeks arg2: for arg3: Geeks arg1: Geeks arg2: for arg3: Geeks>
Exemplul 2:
Aici, trecem *args și **kwargs ca argument în funcția myFun. Unde „tocilari”, „pentru”, „tocilari” este trecut ca *args și first=Tocici, mijloc=pentru, ultimul=Tocici este trecut ca **kwargs și imprimare în aceeași linie.
piton def myFun(*args, **kwargs): print('args: ', args) print('kwargs: ', kwargs) # Now we can use both *args ,**kwargs # to pass arguments to this function : myFun('geeks', 'for', 'geeks', first='Geeks', mid='for', last='Geeks')>
Ieșire:
args: ('geeks', 'for', 'geeks') kwargs: {'first': 'Geeks', 'mid': 'for', 'last': 'Geeks'}>
Folosind *args și **kwargs în Python pentru a seta valorile obiectului
Exemplul 1: folosind Python *args
Piton # defining car class class Car(): # args receives unlimited no. of arguments as an array def __init__(self, *args): # access args index like array does self.speed = args[0] self.color = args[1] # creating objects of car class audi = Car(200, 'red') bmw = Car(250, 'black') mb = Car(190, 'white') # printing the color and speed of the cars print(audi.color) print(bmw.speed)>
Ieșire:
red 250>
Exemplul 2: folosind Python **kwargs
Piton # defining car class class Car(): # args receives unlimited no. of arguments as an array def __init__(self, **kwargs): # access args index like array does self.speed = kwargs['s'] self.color = kwargs['c'] # creating objects of car class audi = Car(s=200, c='red') bmw = Car(s=250, c='black') mb = Car(s=190, c='white') # printing the color and speed of cars print(audi.color) print(bmw.speed)>
Ieșire:
red 250>