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'>
Inicia sesión para responder este quiz y rastrear tu progreso de aprendizaje
*args?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'>
Inicia sesión para responder este quiz y rastrear tu progreso de aprendizaje
**kwargs?