1 usuario conectado

Funciones.Argumentos posicionales y con nombre en Python

Comparte esto

Profundicemos en los argumentos posicionales y los argumentos con nombre (también conocidos como argumentos de palabra clave o keyword arguments) en Python, que son las dos formas principales de pasar valores a los parámetros de una función cuando la llamas.

Argumentos Posicionales:

Cuando llamas a una función utilizando argumentos posicionales, los valores que proporcionas se asignan a los parámetros de la función en el orden en que se definieron en la firma de la función. La posición del argumento en la llamada determina a qué parámetro se asigna.

Ejemplo:

Python
 
def describir_persona(nombre, edad, ciudad):
    """Describe a una persona con su nombre, edad y ciudad."""
    print(f"Nombre: {nombre}, Edad: {edad}, Ciudad: {ciudad}")

# Llamada con argumentos posicionales
describir_persona("Alicia", 30, "Madrid")
# "Alicia" se asigna a 'nombre', 30 a 'edad', y "Madrid" a 'ciudad'

En este caso, la función describir_persona espera tres argumentos en un orden específico: nombre, edad, y ciudad. Cuando llamamos a la función con "Alicia", 30, y "Madrid", estos valores se asignan a los parámetros correspondientes basándose en su posición.

Problemas con los Argumentos Posicionales:

Argumentos con Nombre (Keyword Arguments):

Cuando llamas a una función utilizando argumentos con nombre, especificas el nombre del parámetro al que quieres pasar el valor, utilizando la sintaxis parametro=valor. El orden en el que proporcionas los argumentos con nombre no importa, ya que Python los empareja con los parámetros correspondientes por su nombre.

Ejemplo:

Python
 
def describir_persona(nombre, edad, ciudad):
    """Describe a una persona con su nombre, edad y ciudad."""
    print(f"Nombre: {nombre}, Edad: {edad}, Ciudad: {ciudad}")

# Llamada con argumentos con nombre
describir_persona(edad=30, ciudad="Madrid", nombre="Alicia")
# Los valores se asignan a los parámetros por su nombre, sin importar el orden

Aquí, aunque los argumentos se pasan en un orden diferente al de la definición de la función, Python los asigna correctamente a los parámetros nombre, edad, y ciudad basándose en los nombres especificados en la llamada.

Ventajas de los Argumentos con Nombre:

Combinación de Argumentos Posicionales y con Nombre:

Es posible combinar argumentos posicionales y con nombre en una misma llamada a una función. Sin embargo, hay una regla importante a seguir: los argumentos posicionales deben ir siempre antes que los argumentos con nombre.

Ejemplo:

Python
 
def calcular_area(base, altura, forma="rectángulo"):
    """Calcula el área de una figura."""
    if forma == "rectángulo":
        return base * altura
    elif forma == "triángulo":
        return 0.5 * base * altura
    else:
        return None

# Llamada con argumentos posicionales
area1 = calcular_area(10, 5)  # base=10, altura=5, forma usa el valor por defecto

# Llamada con un argumento posicional y uno con nombre
area2 = calcular_area(10, altura=5)  # base=10, altura=5, forma usa el valor por defecto

# Llamada con argumentos posicionales y uno con nombre al final
area3 = calcular_area(10, 5, forma="triángulo")

# Llamada con todos los argumentos con nombre
area4 = calcular_area(base=10, altura=5, forma="triángulo")

# Llamada incorrecta (argumento con nombre antes de posicional) generará un TypeError
# area_error = calcular_area(base=10, 5)  # TypeError: positional argument follows keyword argument

print(f"Área 1: {area1}")
print(f"Área 2: {area2}")
print(f"Área 3: {area3}")
print(f"Área 4: {area4}")

En resumen:

Comprender y utilizar correctamente los argumentos posicionales y con nombre te permitirá escribir funciones más versátiles y llamadas a funciones más claras y robustas.