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']