logo

*args y **kwargs en Python

En este artículo, cubriremos lo que hacen ** (doble estrella/asterisco) y * (estrella/asterisco) para los parámetros en Pitón , Aquí también cubriremos Ejemplos de args y kwargs en Python. Podemos pasar un número variable de argumentos a una función usando símbolos especiales.

Hay dos símbolos especiales:

*args y **kwargs en Python



Símbolos especiales utilizados para pasar argumentos en Python:

  • *args (argumentos sin palabras clave)
  • **kwargs (argumentos de palabras clave)

Nota: Usamos la notación comodín o * como esta – *args O **kwargs – como argumento de nuestra función cuando tenemos dudas sobre la cantidad de argumentos que debemos pasar en una función.

¿Qué es Python *args?

La sintaxis especial *argumentos en las definiciones de funciones en Python se usa para pasar un número variable de argumentos a una función. Se utiliza para pasar una lista de argumentos de longitud variable y sin palabras clave.

  • La sintaxis consiste en utilizar el símbolo * para aceptar un número variable de argumentos; por convención, se utiliza a menudo con la palabra args.
  • Qué *argumentos lo que le permite hacer es aceptar más argumentos que el número de argumentos formales que definió previamente. Con *argumentos , se puede agregar cualquier cantidad de argumentos adicionales a sus parámetros formales actuales (incluido cero argumentos adicionales).
  • Por ejemplo, queremos crear una función de multiplicación que tome cualquier cantidad de argumentos y sea capaz de multiplicarlos todos juntos. Se puede hacer usando *args.
  • Al usar *, la variable que asociamos con * se vuelve iterable, lo que significa que puede hacer cosas como iterar sobre ella, ejecutar algunas funciones de orden superior como mapear y filtrar, etc.

Ejemplo 1:

clase vs objeto java

Programa Python para ilustrar *args para un número variable de argumentos

gb vs mb
pitón
def myFun(*argv): for arg in argv: print(arg) myFun('Hello', 'Welcome', 'to', 'techcodeview.com')>

Producción:

Hello Welcome to techcodeview.com>

Ejemplo 2:

Programa Python para ilustrar *args con un primer argumento adicional

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')>

Producción:

First argument : Hello Next argument through *argv : Welcome Next argument through *argv : to Next argument through *argv : techcodeview.com>

¿Qué es Python **kwargs?

La sintaxis especial **kwargs en las definiciones de funciones en Python se utiliza para pasar una lista de argumentos de longitud variable con palabras clave. Usamos el nombre kwargs con la estrella doble. La razón es que la estrella doble nos permite pasar argumentos de palabras clave (y cualquier número de ellos).

  • Un argumento de palabra clave es donde usted proporciona un nombre a la variable cuando la pasa a la función.
  • Uno puede pensar en el kwargs como un diccionario que asigna cada palabra clave al valor que le pasamos. Es por eso que cuando iteramos sobre el kwargs no parece haber ningún orden en el que se imprimieron.

Ejemplo 1:

Programa Python para ilustrar *kwargs para un número variable de argumentos de palabras clave. Aquí **kwargs acepta un argumento de longitud variable con palabra clave pasado por la llamada a la función. for first=’Geeks’ primero es clave y ‘Geeks’ es un valor. En palabras simples, lo que asignamos es valor y a quién se lo asignamos es la clave.

script de carga de javascript
Pitón
def myFun(**kwargs): for key, value in kwargs.items(): print('%s == %s' % (key, value)) # Driver code myFun(first='Geeks', mid='for', last='Geeks')>

Producción:

first == Geeks mid == for last == Geeks>

Ejemplo 2:

Programa Python para ilustrar **kwargs para un número variable de argumentos de palabras clave con un argumento adicional. De todos modos, pero un cambio es que pasamos un argumento que no es una palabra clave que es aceptable mediante un argumento posicional (arg1 en myFun). y los argumentos de palabras clave que pasamos son aceptables para **kwargs. sencillo verdad?

Pitón
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')>

Producción:

first == Geeks mid == for last == Geeks>

Usar *args y **kwargs en Python para llamar a una función

Ejemplo 1:

Aquí, pasamos *args y **kwargs como argumento en la función myFun. Pasar *args a myFun simplemente significa que pasamos los argumentos posicionales y de longitud variable contenidos en args. entonces, los Geeks pasan al arg1, for pasan al arg2 y los Geeks pasan al arg3. Cuando pasamos **kwargs como argumento a myFun, significa que acepta argumentos de palabras clave. Aquí, arg1 es clave y el valor es Geeks, que se pasa a arg1, y así, for y Geeks pasan a arg2 y arg3 respectivamente. Después de pasar todos los datos vamos imprimiendo todos los datos en líneas.

pitón
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)>

Producción:

arg1: Geeks arg2: for arg3: Geeks arg1: Geeks arg2: for arg3: Geeks>

Ejemplo 2:

Aquí, pasamos *args y **kwargs como argumento en la función myFun. dónde 'geeks', 'para', 'geeks' se pasa como *args, y primero=geeks, mitad=para, último=geeks se pasa como **kwargs e imprimiendo en la misma línea.

comparar en java
pitón
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')>

Producción:

args: ('geeks', 'for', 'geeks') kwargs: {'first': 'Geeks', 'mid': 'for', 'last': 'Geeks'}>

Usando *args y **kwargs en Python para establecer valores de objeto

Ejemplo 1: usar Python *args

Pitón
# 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)>

Producción:

red 250>

Ejemplo 2: usar Python **kwargs

Pitón
# 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)>

Producción:

red 250>