Args y Kwargs de Python

args y kwargs de Python Hechos Fáciles

*args y **kwargs pueden parecer intimidantes, pero la verdad es que no son tan difíciles de entender y tienen el poder de otorgar a tus funciones mucha flexibilidad.

Lee el artículo Python *args y **kwargs Hechos Fáciles para una introducción más profunda.

Args y Kwargs

*args y **kwargs te permiten pasar un número indefinido de argumentos y argumentos de palabra clave al llamar a una función.

# Define una función que acepta cualquier número de argumentos posicionales y de palabra clave
def some_function(*args, **kwargs):
    pass

# Llama con cualquier número de argumentos posicionales
some_function(arg1, arg2, arg3)

# Llama con cualquier número de argumentos de palabra clave
some_function(key1=arg1, key2=arg2, key3=arg3)

# Llama con argumentos posicionales y de palabra clave
some_function(arg, key1=arg1)

# O llama sin argumentos en absoluto
some_function()

Convenciones de Python

Las palabras *args y **kwargs son convenciones. No son impuestas por el intérprete, sino consideradas buenas prácticas por la comunidad de Python.

Args

Puedes acceder a los argumentos a través de la variable args:

# *args recopila los argumentos posicionales en una tupla
def some_function(*args):
    print(f'Argumentos pasados: {args} como {type(args)}')

# Pasa múltiples argumentos - serán recopilados en la tupla args
some_function('arg1', 'arg2', 'arg3')
Argumentos pasados: ('arg1', 'arg2', 'arg3') como <class 'tuple'>
Quiz

Inicia sesión para responder este quiz y rastrear tu progreso de aprendizaje

¿En qué tipo de dato recopila los argumentos *args?
A. Una lista
B. Una tupla
C. Un diccionario
D. Un conjunto

Kwargs

Las palabras clave se acceden a través de la variable kwargs:

# **kwargs recopila los argumentos de palabra clave en un diccionario
def some_function(**kwargs):
    print(f'palabras clave: {kwargs} como {type(kwargs)}')

# Pasa argumentos de palabra clave - serán recopilados en el diccionario kwargs
some_function(key1='arg1', key2='arg2')
palabras clave: {'key1': 'arg1', 'key2': 'arg2'} como <class 'dict'>
Quiz

Inicia sesión para responder este quiz y rastrear tu progreso de aprendizaje

¿En qué tipo de dato recopila los argumentos **kwargs?
A. Una lista
B. Una tupla
C. Un diccionario
D. Un conjunto

Enlaces relevantes