Funciones en Python: Explicación Detallada

Definición y uso de funciones

En Python, se pueden definir funciones utilizando la palabra clave def. Una vez definida, la función se invoca mediante su nombre seguido de paréntesis.


def mostrar_mensaje(texto):
    print(f"El mensaje es: {texto}")

mostrar_mensaje("¡Aprendiendo Python!")
# Salida: El mensaje es: ¡Aprendiendo Python!

Parámetros formales y reales

Parámetros formales se utilizan en la definición de la función, mientras que los parámetros reales se pasan al llamarla.


def calcular_suma(num1, num2):
    return num1 + num2

resultado = calcular_suma(4, 6)
print(resultado)  # Salida: 10

Argmuentos posicionales

Los argumentos posicionales se transmiten en el mismo orden en que están definidos en la función.


def describir_elemento(tipo, nombre):
    print(f"El elemento es de tipo {tipo} y se llama {nombre}.")

describir_elemento("fruta", "manzana")  # Salida: El elemento es de tipo fruta y se llama manzana.

Argumentos por palabra clave

Estos argumentos permiten especificar nombres de parámetros al llamar a la función, sin depender del orden.


describir_elemento(nombre="pera", tipo="fruta")  # Salida: El elemento es de tipo fruta y se llama pera.

Valores predeterminados para parámetros

Se pueden asignar valores predeterminados a los parámetros en la definición de la función.


def mostrar_info(usuario, rol="invitado"):
    print(f"Usuario: {usuario}, Rol: {rol}")

mostrar_info("ana")  # Salida: Usuario: ana, Rol: invitado
mostrar_info("carlos", "administrador")  # Salida: Usuario: carlos, Rol: administrador

Argumentos variables

Los argumentos variables permiten pasar un número arbitrario de parámetros. *args captura argumentos posicionales, y **kwargs captura argumentos por palabra clave.


def combinar_elementos(*items):
    print("Elementos combinados:")
    for item in items:
        print(f" - {item}")

combinar_elementos("rojo", "azul", "verde")
# Salida: Elementos combinados:
#  - rojo
#  - azul
#  - verde

def crear_perfil(nombre, edad, **detalles):
    perfil = {"nombre": nombre, "edad": edad}
    for clave, valor in detalles.items():
        perfil[clave] = valor
    return perfil

perfil = crear_perfil("luis", 30, ocupacion="ingeniero", ciudad="México")
print(perfil)
# Salida: {'nombre': 'luis', 'edad': 30, 'ocupacion': 'ingeniero', 'ciudad': 'México'}

Valores de retorno

Las funciones pueden devolver uno o varios valores, que pueden asignarse a variables.


def formatear_nombre(p_nombre, s_nombre):
    nombre_completo = f"{p_nombre} {s_nombre}"
    return nombre_completo.upper()

nombre_final = formatear_nombre("maria", "lopez")
print(nombre_final)  # Salida: MARIA LOPEZ

def calcular_area_perimetro(base, altura):
    area = base * altura
    perimetro = 2 * (base + altura)
    return area, perimetro

a, p = calcular_area_perimetro(8, 4)
print(f"Área: {a}, Perímetro: {p}")  # Salida: Área: 32, Perímetro: 24

Ámbito de las variables

Variables locales se definen dentro de una función y solo son accesibles en ella. Variables golbales se definen fuera y pueden usarse en todo el script.


global_var = "Soy global"

def acceder_global():
    print(global_var)

acceder_global()  # Salida: Soy global

def ejemplo_local():
    local_var = "Soy local"
    print(local_var)

ejemplo_local()  # Salida: Soy local

try:
    print(local_var)
except NameError as error:
    print(error)  # Salida: name 'local_var' is not defined

def modificar_global():
    global global_var
    global_var = "Soy global modificada"

modificar_global()
print(global_var)  # Salida: Soy global modificada

Funciones anónimas (lambda)

Las expresiones lambda crean funciones pequeñas y anónimas que pueden aceptar varios parámetros pero contienen una sola expresión.


cuadrado = lambda n: n ** 2
print(cuadrado(6))  # Salida: 36

numeros = [2, 4, 6, 8, 10]
cuadrados = list(map(lambda x: x * x, numeros))
print(cuadrados)  # Salida: [4, 16, 36, 64, 100]

palabras = ["sol", "luna", "estrella", "cielo"]
ordenar_por_longitud = sorted(palabras, key=lambda palabra: len(palabra), reverse=True)
print(ordenar_por_longitud)  # Salida: ['estrella', 'luna', 'cielo', 'sol']

Etiquetas: Python funciones lambda Parámetros ámbito

Publicado el 7-18 21:06