Dominando argumentos de funciones en Python: Posicionales, por palabra clave y por defecto
Dominando argumentos de funciones en Python
Descubra cómo diseñar funciones que acepten números variables de argumentos en Python—usando valores por defecto, palabras clave y parámetros arbitrarios para código más limpio y adaptable.
Video: Argumentos de funciones en Python: Posicionales, Palabras clave y Por defecto
Argumentos
En el tema de funciones definidas por el usuario, cubrimos definición e invocación de funciones. Una llamada que no coincide con la firma esperada lanza error. Por ejemplo:
def saludar(nombre, msg):
"""Esta función saluda a la persona con el mensaje proporcionado."""
print("Hola", nombre + ", " + msg)
saludar("Mónica", "¡Buenos días!")
Salida
Hola Mónica, ¡Buenos días!
La función saludar() acepta dos parámetros. Llamarla con el número correcto de argumentos funciona sin problemas; de lo contrario, el intérprete emite un TypeError con mensaje claro.
>>> saludar("Mónica") # solo un argumento
TypeError: saludar() missing 1 required positional argument: 'msg'
>>> saludar() # sin argumentos TypeError: saludar() missing 2 required positional arguments: 'nombre' and 'msg'
Argumentos de función variables
Python ofrece formas flexibles de aceptar un número variable de argumentos. Tres patrones comunes se cubren a continuación.
Argumentos por defecto en Python
Los parámetros pueden recibir valores por defecto usando el operador de asignación (=). El siguiente ejemplo demuestra cómo un mensaje opcional por defecto es "¡Buenos días!":
def saludar(nombre, msg="¡Buenos días!"):
""" Esta función saluda a la persona con el mensaje proporcionado.
Si el mensaje no se suministra, por defecto es "¡Buenos días!". """
print("Hola", nombre + ", " + msg)
saludar("Kate")
saludar("Bruce", "¿Cómo estás?")
Salida
Hola Kate, ¡Buenos días! Hola Bruce, ¿Cómo estás?
En esta definición, nombre es obligatorio, mientras que msg es opcional. Cuando hay un argumento por defecto presente, todos los parámetros subsiguientes deben tener también valores por defecto; de lo contrario ocurre SyntaxError.
def saludar(msg = "¡Buenos días!", nombre): pass
SyntaxError: non-default argument follows default argument
Argumentos por palabra clave en Python
Python permite a los llamadores especificar argumentos por nombre, permitiendo flexibilidad en el orden posicional. La misma función saludar() puede invocarse así:
# 2 argumentos por palabra clave
saludar(nombre = "Bruce", msg = "¿Cómo estás?")
# 2 argumentos por palabra clave (fuera de orden)
saludar(msg = "¿Cómo estás?", nombre = "Bruce")
# 1 posicional, 1 por palabra clave
saludar("Bruce", msg = "¿Cómo estás?")
Mezclar argumentos posicionales y por palabra clave es permisible solo cuando todos los argumentos posicionales preceden a los de palabra clave; de lo contrario resulta SyntaxError.
saludar(nombre="Bruce","¿Cómo estás?")
SyntaxError: non-keyword arg after keyword arg
Argumentos arbitrarios en Python
Cuando el número de argumentos es desconocido en tiempo de diseño, use un asterisco (*) para capturarlos como tupla:
def saludar(*nombres):
"""Saluda a cada nombre en la tupla suministrada."""
for nombre in nombres:
print("Hola", nombre)
saludar("Mónica", "Lucas", "Esteban", "Juan")
Salida
Hola Mónica Hola Lucas Hola Esteban Hola Juan
Dentro de la función, nombres es una tupla que contiene todos los argumentos pasados, que luego puede iterarse o procesarse según necesidad.
python
- Dominando tipos de datos en Python: Guía práctica
- Dominando operadores en Python: Guía completa
- Dominando la sentencia pass en Python: Guía práctica
- Funciones lambda en Python: Guía práctica de funciones anónimas
- Dominando Diccionarios en Python: Creación, Manipulación y Técnicas Avanzadas
- Generadores en Python: Iteración Eficiente y Casos de Uso Avanzados
- Explicación de Closures en Python: Cómo las Funciones Anidadas Capturan Variables
- Dominando Decoradores en Python: Mejora Funciones con Técnicas Expertas
- Domine el Método strip() de Python: Guía Completa y Ejemplos Prácticos
- Dominando las funciones lambda en Python: ejemplos prácticos y mejores prácticas
- Función abs() en Python: calcular valores absolutos para números y complejos