Modificadores de parámetro en Python

Resumen

En Python los modificadores de parámetros (/, *, *args, **kwargs) controlan cómo se pasan los argumentos a una función, definiendo si son posicionales, nombrados o variables.

Tipos de modificadores

/ - Argumento solo posicional

El marcador / indica que los parámetros anteriores solo pueden pasarse por posición, no por nombre. Esto es útil cuando queremos que los argumentos sigan un orden específico sin que el usuario pueda pasarlos por nombre. Ejemplo:

def dividir(a, b, /):
    return a / b

dividir(10, 2)  # Correcto: los argumentos se pasan por posición.
dividir(a=10, b=2)  # Error: los argumentos no pueden pasarse por nombre.

* - Argumento solo nombrado

El marcador * indica que todos los parámetros posteriores deben ser pasados por nombre, no por posición. Esto asegura que los argumentos sean explícitos. Ejemplo:

def saludar(nombre, *, mensaje="Hola"):
    return f"{mensaje}, {nombre}"

saludar("Juan", mensaje="Buenos días")  # Correcto: `mensaje` se pasa por nombre.
saludar("Juan", "Buenos días")  # Error: `mensaje` debe pasarse por nombre.

*args - Argumentos posicionales variables

El modificador *args permite aceptar un número variable de argumentos posicionales, que se almacenan como una tupla. Esto es útil para funciones que pueden recibir múltiples argumentos sin especificar su número exacto. Ejemplo:

def sumar(*args):
    return sum(args)

sumar(1, 2, 3)  # Correcto: acepta múltiples valores posicionales.
sumar()  # Correcto: no es obligatorio pasar valores.

**kwargs - Argumentos nombrados variables

El modificador **kwargs permite aceptar un número variable de argumentos nombrados, que se almacenan en un diccionario. Es útil cuando no se sabe qué claves y valores se recibirán. Ejemplo:

def describir(**kwargs):
    for clave, valor in kwargs.items():
        print(f"{clave}: {valor}")

describir(nombre="Juan", edad=30, profesion="Ingeniero")  # Correcto: acepta argumentos nombrados.
describir()  # Correcto: no es obligatorio pasar valores.