Mas de funciones¶
Variables Globales y Locales en Python¶
Las variables en Python pueden ser globales o locales, lo que significa que pueden tener alcance dentro de todo el programa o limitarse a una función específica. Es importante comprender la diferencia entre estos dos tipos de variables para evitar errores y escribir un código más claro y mantenible.
Variables Globales¶
Las variables globales son aquellas que se definen fuera de cualquier función y están disponibles en todo el programa. Pueden ser accedidas y modificadas desde cualquier parte del código. Sin embargo, su uso excesivo puede hacer que el código sea menos legible y más propenso a errores.
Por ejemplo:
1global_var = 10
2
3def una_function():
4 print("Desde una - Valor global:", global_var)
5
6def otra_function():
7 print("Desde otra - Valor global:", global_var)
8
9una_function() # Salida: Desde una - Valor global: 10
10otra_function() # Salida: Desde otra - Valor global: 10
Variables Locales¶
Las variables locales son aquellas que se definen dentro de una función y solo son accesibles dentro de esa función. No se pueden acceder a ellas desde fuera de la función.
Por ejemplo:
1def some_function():
2 local_var = 20
3 print("Valor local:", local_var)
4
5some_function() # Salida: Valor local: 20
6print(local_var) # Error: NameError: name 'local_var' is not defined
Uso en Funciones¶
Es común que las variables locales se utilicen dentro de funciones para almacenar datos temporales o resultados intermedios. Por otro lado, las variables globales se utilizan para almacenar información que debe ser compartida entre múltiples partes del programa.
Por ejemplo, considera esta función que suma dos números y utiliza una variable global:
1global_var = 10
2
3def sumar(num):
4 return num + global_var
5
6resultado = sumar(5)
7print("Resultado:", resultado) # Salida: Resultado: 15
En este caso, la función sumar() utiliza la variable global global_var para realizar la suma.
Es importante tener en cuenta que si intentas modificar una variable global dentro de una función, debes usar la palabra clave global para indicar que estás haciendo referencia a la variable global y no creando una nueva variable local con el mismo nombre.
Por ejemplo:
1global_var = 10
2
3def modificar_global():
4 global global_var
5 global_var = 20
6
7modificar_global()
8print("Nueva global_var:", global_var) # Salida: Nueva global_var: 20
Funciones Recursivas en Python¶
Las funciones recursivas son aquellas que se llaman a sí mismas durante su ejecución. Este enfoque permite resolver problemas que pueden ser divididos en casos más pequeños y más simples. En Python, las funciones recursivas son una herramienta poderosa para resolver una amplia gama de problemas.
Por ejemplo, considera la siguiente función que calcula el factorial de un número:
1#!/usr/bin/python3
2# -*- coding: utf8 -*-
3def factorial(x):
4 if x == 0 or x == 1:
5 return 1
6 return x * factorial(x - 1)
7
8print(factorial(4))
Este código calcula el factorial de un número utilizando una función recursiva. El factorial de un número entero positivo n se define como el producto de todos los números enteros positivos menores o iguales a n. Para calcular factorial(n), la función factorial() se llama repetidamente con valores decrementados de x hasta que x sea igual a 1.
La ejecución de factorial(4) se puede visualizar de la siguiente manera:
factorial(4) |
||||
4 * factorial(3) |
||||
3 * factorial(2) |
||||
2 * factorial(1) |
||||
1 |
En este ejemplo, cada llamada recursiva reduce el problema original a un caso más simple. Cuando x alcanza el valor de 1, se alcanza el caso base y la recursión termina, devolviendo el valor 1.
Es importante tener en cuenta que las funciones recursivas deben tener condiciones de terminación bien definidas para evitar que el programa entre en un bucle infinito. Además, el uso excesivo de la recursión puede resultar en un exceso de uso de la pila de llamadas y causar un desbordamiento de pila.
Las funciones recursivas pueden ser una herramienta elegante para resolver ciertos problemas, pero es fundamental comprender cómo funcionan y cuándo utilizarlas de manera efectiva.
Pasar Parámetros por Defecto a una Función en Python¶
Los parámetros por defecto en Python permiten especificar valores predeterminados para los argumentos de una función. Estos valores se utilizan cuando la función es llamada sin proporcionar valores para esos argumentos específicos. Esto brinda flexibilidad y conveniencia en el uso de funciones al evitar la necesidad de proporcionar todos los argumentos en cada llamada.
Uso¶
Simplifica el llamado a funciones al proporcionar valores predeterminados que son comunes en la mayoría de los casos.
Permite que las funciones sean más flexibles al permitir que los argumentos sean opcionales.
Ejemplo¶
1def saludar(nombre="Usuario", mensaje="Hola"):
2 print(mensaje, nombre)
3
4# Llamada a la función sin proporcionar argumentos
5saludar() # Salida: Hola Usuario
6
7# Llamada a la función con un argumento
8saludar("Juan") # Salida: Hola Juan
9
10# Llamada a la función con ambos argumentos
11saludar("María", "¡Buen día!") # Salida: ¡Buen día! María
En este ejemplo, la función saludar() tiene dos parámetros, nombre y mensaje, ambos con valores por defecto. Cuando se llama a la función sin proporcionar argumentos, se utilizan los valores por defecto. Sin embargo, si se proporcionan argumentos al llamar a la función, estos sobrescriben los valores predeterminados. Esto proporciona flexibilidad al permitir que la función se adapte a diferentes casos de uso sin necesidad de definir múltiples versiones de la misma función.
Función Lambda en Python¶
Una función lambda en Python es una función anónima y de una sola línea. A
diferencia de las funciones definidas con la palabra clave def, las
funciones lambda se definen utilizando la palabra clave lambda, y pueden
tener cualquier número de argumentos, pero solo pueden contener una expresión.
Uso¶
Las funciones lambda se utilizan comúnmente para crear funciones simples y cortas sin la necesidad de definir una función completa utilizando la sintaxis regular de definición de funciones con
def.Son útiles cuando necesitas una función temporal para un propósito específico, como para pasarla como argumento a otra función.
Sintaxis¶
La sintaxis general de una función lambda es la siguiente:
1lambda argumentos: expresión
Donde argumentos son los argumentos de la función y expresión es el
resultado de la función.
Ejemplos¶
Función lambda para sumar dos números:
1suma = lambda x, y: x + y
2resultado = suma(3, 5)
3print(resultado) # Salida: 8
Función lambda para calcular el cuadrado de un número:
1cuadrado = lambda x: x**2
2resultado = cuadrado(4)
3print(resultado) # Salida: 16
Ejercicios de Programación para Funciones Recursivas¶
Cálculo de la Suma de los Primeros N Números Naturales: El ejercicio consiste en escribir una función recursiva para calcular la suma de los primeros N números naturales. Para resolver este problema utilizando recursión, la función debería verificar si N es igual a 0 (caso base) y devolver 0 en ese caso. Si N es mayor que 0, la función debe llamar a sí misma con N-1 y sumar N al resultado de la llamada recursiva.
Cálculo de la Potencia de un Número: El ejercicio consiste en escribir una función recursiva para calcular la potencia de un número dado elevado a un exponente entero no negativo. Para resolver este problema utilizando recursión, la función debería verificar si el exponente es igual a 0 (caso base) y devolver 1 en ese caso. Si el exponente es mayor que 0, la función debe llamar a sí misma con el mismo número de base y el exponente decrementado, multiplicando el resultado de la llamada recursiva por la base original.
Cálculo de la Secuencia de Fibonacci: El ejercicio consiste en escribir una función recursiva para calcular el término n-ésimo de la secuencia de Fibonacci. Para resolver este problema utilizando recursión, la función debería verificar si n es igual a 0 o 1 (caso base) y devolver n en esos casos. Si n es mayor que 1, la función debe llamar a sí misma con n-1 y n-2, sumar los resultados de las llamadas recursivas y devolver el resultado.