args y kwargs en Python (argumentos)

args representa un conjunto arbitrario de argumentos posicionales, mientras que kwargs es lo mismo pero con argumentos con keyword, o nombre. De ahí el significado de kwargskeyword arguments
Hay que destacar que la sintaxis es * y **, siendo los nombres de args y kwargs una simple convención, pero no es un requisito estricto su uso; es decir, que si a una función le pasamos como argumento *mi_lista o **mi_diccionario tendrá el mismo efecto.
*args: es una lista de argumentos, como argumentos posicionales.
 
**kwargs: es un diccionario cuyas claves se convierten en parámetros y sus valores en los argumentos de los parámetros.

Por ejemplo:

def lista_argumentos(*args):
    for i, arg in enumerate(args):
        print('%d - %s' % (i, arg))

Salida por consola: Cuando escribes por consola aparece el *args




In [10]: lista_argumentos("Aulavir.com","María",[1,2],3)

0 - Aulavir.com
1 - María
2 - [1, 2]
3 - 3

De la misma forma podemos realizarlo con **, tomando en cuenta que es un diccionario:
Ejemplo: 

def auto_props(**props):
    for key in props:
        print(key, props[key])

Salida por consola: Aparece el **props









auto_props(v=1,a=3,c=4)
v 1
a 3
c 4

En esta función tenemos dos argumentos y una keyword:

def saludo_args(nombre,pais,**kwargs):

    print(f'Hola {nombre} de {pais}')

    for key in kwargs:

        print(key, kwargs[key])

Al escribir en consola obtenemos:


saludo_args("Pepe","EEUU", edad=20, peso=72)

En la salida por consola obtenemos:

Hola Pepe de EEUU
edad 20
peso 72

En este ejemplo unimos un args y kwargs: 

def auto_propsss(*args,**kwargs):
    print(f'Hola {args[0]} de {args[1]}')
    for key in kwargs:
        print(key, kwargs[key])

Al escribir en consola:

auto_propsss("Jhon","Alemania",edad=30, talla=1.64,peso=72)

Obtenemos en pantalla:
Hola Jhon de Alemania
edad 30
talla 1.64
peso 72


Referencias:
Canepa, G. (2017, July 19). Args y kwargs en Python: su significado. Retrieved October 17, 2018, from https://blog.carreralinux.com.ar/2017/07/args-y-kwargs-python-significado/


*args y **kwargs - python, con ejemplos. (2018, February 17). Retrieved October 25, 2018, from https://jarroba.com/args-kwargs-python-ejemplos/

Comentarios

Entradas más populares de este blog

Desempacar y Tuples en Python

UnPacking dictionary (Desempaquetando diccionarios)

Enumerate