En aquest article, tractarem què fan ** (estrella doble/asterisc) i * (estrella/asterisc) per als paràmetres de Python , Aquí, també tractarem exemples d'args i kwargs en Python. Podem passar un nombre variable d'arguments a una funció utilitzant símbols especials.
Hi ha dos símbols especials:
*args i **kwargs a Python
Símbols especials utilitzats per passar arguments a Python:
- *args (arguments que no són de paraula clau)
- **kwargs (arguments de paraula clau)
Nota: Utilitzem el comodí o la notació * així - *args O **kwargs - com a argument de la nostra funció quan tenim dubtes sobre el nombre d'arguments que hauríem de passar en una funció.
Què és Python *args?
La sintaxi especial *args en definicions de funcions en Python s'utilitza per passar un nombre variable d'arguments a una funció. S'utilitza per passar una llista d'arguments de longitud variable sense paraules clau.
- La sintaxi és utilitzar el símbol * per prendre un nombre variable d'arguments; per convenció, s'utilitza sovint amb la paraula args.
- Què *args El que us permet és agafar més arguments que el nombre d'arguments formals que heu definit anteriorment. Amb *args , es poden enganxar qualsevol nombre d'arguments addicionals als vostres paràmetres formals actuals (incloent-hi zero arguments addicionals).
- Per exemple, volem fer una funció de multiplicació que prengui qualsevol nombre d'arguments i sigui capaç de multiplicar-los tots junts. Es pot fer amb *args.
- Utilitzant *, la variable que associem amb * esdevé iterable, el que significa que podeu fer coses com ara iterar-hi, executar algunes funcions d'ordre superior com ara el mapa i el filtre, etc.
Exemple 1:
mapeig mecanografiat
Programa Python per il·lustrar *args per a un nombre variable d'arguments
pitó
def myFun(*argv): for arg in argv: print(arg) myFun('Hello', 'Welcome', 'to', 'techcodeview.com')>
Sortida:
Hello Welcome to techcodeview.com>
Exemple 2:
Programa Python per il·lustrar *args amb un primer argument addicional
Python 3 def myFun(arg1, *argv): print('First argument :', arg1) for arg in argv: print('Next argument through *argv :', arg) myFun('Hello', 'Welcome', 'to', 'techcodeview.com')>
Sortida:
First argument : Hello Next argument through *argv : Welcome Next argument through *argv : to Next argument through *argv : techcodeview.com>
Què és Python **kwargs?
La sintaxi especial **Quargs en definicions de funcions a Python s'utilitza per passar una llista d'arguments de longitud variable amb paraules clau. Utilitzem el nom kwargs amb la doble estrella. El motiu és que l'estrella doble ens permet passar per arguments de paraula clau (i qualsevol nombre d'ells).
rebaixa amb imatges
- Un argument de paraula clau és on proporcioneu un nom a la variable mentre la passeu a la funció.
- Es pot pensar en el kwargs com si fos un diccionari que mapeja cada paraula clau amb el valor que hi passem al costat. És per això que quan iterem sobre el kwargs no sembla que hi hagi cap ordre en què es van imprimir.
Exemple 1:
Programa Python per il·lustrar *kwargs per a un nombre variable d'arguments de paraula clau. Aquí **kwargs accepten arguments de longitud variable amb paraules clau passats per la crida de funció. for first='Geeks' first és clau i 'Geeks' és un valor. en paraules senzilles, el que assignem és valor, i a qui assignem és clau.
algorisme rrPython
def myFun(**kwargs): for key, value in kwargs.items(): print('%s == %s' % (key, value)) # Driver code myFun(first='Geeks', mid='for', last='Geeks')>
Sortida:
first == Geeks mid == for last == Geeks>
Exemple 2:
Programa Python per il·lustrar **kwargs per a un nombre variable d'arguments de paraula clau amb un argument addicional. De totes maneres, però un canvi és que passem un argument que no sigui de paraula clau acceptable per argument posicional (arg1 a myFun). i els arguments de paraula clau que passem són acceptables per **kwargs. senzill oi?
Python 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')>
Sortida:
first == Geeks mid == for last == Geeks>
Utilitzant tant *args com **kwargs a Python per cridar una funció
Exemple 1:
Aquí, estem passant *args i **kwargs com a argument a la funció myFun. Passar *args a myFun significa simplement que passem els arguments posicionals i de longitud variable que contenen els arguments. per tant, els geeks passen a l'arg1, per passar a l'arg2, i els geeks passen a l'arg3. Quan passem **kwargs com a argument al myFun vol dir que accepta arguments de paraula clau. Aquí, arg1 és clau i el valor és Geeks que es passa a arg1, i així per i Geeks passen a arg2 i arg3 respectivament. Després de passar totes les dades estem imprimint totes les dades en línies.
pitó 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)>
Sortida:
arg1: Geeks arg2: for arg3: Geeks arg1: Geeks arg2: for arg3: Geeks>
Exemple 2:
Aquí, estem passant *args i **kwargs com a argument a la funció myFun. on 'frikis', 'per', 'frikis' es passa com a *args, i primer=friquis, mig=per a, darrer=friquis es passa com a **kwargs i la impressió en la mateixa línia.
actor shweta tiwaripitó
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')>
Sortida:
args: ('geeks', 'for', 'geeks') kwargs: {'first': 'Geeks', 'mid': 'for', 'last': 'Geeks'}>
Utilitzant *args i **kwargs a Python per establir valors de l'objecte
- *args rep arguments com a tupla .
- **kwargs rep arguments com a diccionari .
Exemple 1: utilitzant Python *args
Python # 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)>
Sortida:
red 250>
Exemple 2: utilitzant Python **kwargs
Python # 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)>
Sortida:
red 250>