En este artículo, cubriremos qué hacen ** (doble estrella/asterisco) y * (estrella/asterisco) para los parámetros en Python . 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:
Símbolos especiales utilizados para pasar argumentos: –
- *args (argumentos que no son 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 * argumentos?
La sintaxis especial *args 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 sin palabras clave.
- La sintaxis es usar el símbolo * para tomar un número variable de argumentos; por convención, a menudo se usa con la palabra args.
- Lo que *args le permite hacer es tomar más argumentos que la cantidad de argumentos formales que definió previamente. Con *args , se puede agregar cualquier cantidad de argumentos adicionales a sus parámetros formales actuales (incluidos cero argumentos adicionales).
- Por ejemplo, queremos hacer una función de multiplicación que tome cualquier cantidad de argumentos y pueda multiplicarlos todos juntos. Se puede hacer usando *args.
- Usando el *, la variable que asociamos con el * 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:
Programa Python para ilustrar *args para un número variable de argumentos
python3
def myFun(*argv): for arg in argv: print(arg) myFun('Hello', 'Welcome', 'to', 'GeeksforGeeks')
Producción:
Hello Welcome to GeeksforGeeks
Ejemplo 2:
Programa Python para ilustrar *args con un primer argumento extra
Python3
def myFun(arg1, *argv): print("First argument :", arg1) for arg in argv: print("Next argument through *argv :", arg) myFun('Hello', 'Welcome', 'to', 'GeeksforGeeks')
Producción:
First argument : Hello Next argument through *argv : Welcome Next argument through *argv : to Next argument through *argv : GeeksforGeeks
¿Qué es Python **kwargs?
La sintaxis especial **kwargs en las definiciones de funciones en python se usa 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 proporciona un nombre a la variable a medida que la pasa a la función.
- Uno puede pensar en los kwargs como un diccionario que asigna cada palabra clave al valor que pasamos junto a ella. Es por eso que cuando iteramos sobre los kwargs , no parece haber ningún orden en el que se imprimieron.
Ejemplo 1:
Programa de Python para ilustrar *kwargs para un número variable de argumentos de palabras clave. Aquí **kwargs acepta el argumento de longitud variable con palabra clave pasado por la llamada a la función. for first=’Geeks’ first es clave y ‘Geeks’ es un valor. en palabras sencillas, lo que asignamos es valor, y a quién asignamos es clave.
Python3
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 de 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 por un argumento posicional (arg1 en myFun). y los argumentos de palabras clave que pasamos son aceptables para **kwargs. sencillo verdad?
Python3
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
Uso de *args y **kwargs para llamar a una función
Ejemplo 1:
Aquí, estamos pasando *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 que están contenidos en args. entonces, “geeks” pasan a arge1, “for” pasan a arg2, y “geeks” pasan a 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 arge1, y así “for” y “Geeks” pasan a arg2 y arg3 respectivamente. Después de pasar todos los datos, estamos imprimiendo todos los datos en líneas.
python3
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í, estamos pasando *args y **kwargs como argumento en la función myFun. donde ‘geeks’, ‘for’, ‘geeks’ se pasa como *args, y first=”Geeks”, mid=”for”, last=”Geeks” se pasa como **kwargs y se imprime en la misma línea.
python3
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'}
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA