Subido por Jrfox Games

Caratula de programacion

Anuncio
Funciones anidadas, introducción a los arreglos,
ordenación de arreglos, métodos
unidimensionales búsqueda de arreglo.
Verastegui Varillas Cesar Galy- Loayza Ramos Juan Rogelio- Sifuentes Flores Yúnior AngelCarrión Cárcamo Eduardo Paolo- De la Cruz Maguiña Anthony- Quispe Vásquez Juan Rodolfo.
FUNCIONES ANIDADAS
¿Qué son las funciones anidadas?
Una función anidada es una función que se
declara dentro de otra función. En otras
palabras, una función está contenida dentro del
cuerpo de otra. Este tipo de diseño introduce una
estructura jerárquica en el código, donde la
función interna solo puede ser invocada desde
dentro de la función que la contiene.
Ejemplo básico:
def funcion_externa ():
print("Soy la función externa")
def funcion_anidada ():
print ("Soy la función anidada")
funcion_anidada ()
Ejemplo de acceso al ámbito de la función
exterior:
def funcion_externa(x):
def funcion_anidada(y):
return x + y
return funcion_anidada
En este ejemplo, la función anidada tiene acceso
a la variable x de la función externa. Este es un
ejemplo sencillo de cómo una función anidada
puede capturar y usar variables del entorno en el
que fue definida.
Clausuras (Closures)
Las clausuras son un concepto estrechamente
relacionado con las funciones anidadas. Ocurre
cuando una función anidada recuerda el entorno
en el que fue creada, incluso si la función externa
ha finalizado su ejecución. Esto significa que las
variables locales de la función externa
permanecen "vivas" y accesibles para la función
anidada, aunque el flujo de la función externa
haya terminado.
Ejemplo de clausura:
funcion_externa ()
En este ejemplo, la función funcion_anidada está
definida dentro de funcion_externa y solo puede
ser llamada desde dentro de esta última. Si
intentaras llamar a funcion_anidada () fuera de
funcion_externa (), obtendrías un error, ya que la
función anidada solo existe dentro del contexto
de la función externa.
Ámbito de las variables en funciones anidadas
Uno de los aspectos más interesantes de las
funciones anidadas es cómo manejan el ámbito
de las variables. Las funciones anidadas tienen
acceso a las variables definidas en la función que
las contiene, pero no al revés. Este concepto es
fundamental para entender cómo funcionan las
clausuras (closures), que se explicarán más
adelante.
def hacer_multiplicador(n):
def multiplicador(x):
return x * n
return multiplicador
doble = hacer_multiplicador(2)
triple = hacer_multiplicador(3)
print(doble(5)) # Output: 10
print(triple(5)) # Output: 15
En este ejemplo, la función multiplicador
recuerda el valor de n incluso después de que la
función hacer_multiplicador haya terminado. El
objeto doble almacena la clausura que contiene
el valor 2, mientras que triple almacena el valor
3. Las clausuras son muy útiles para crear
funciones personalizadas o que conserven un
estado.
la contiene, proporcionando una capa
adicional de control y seguridad sobre
el flujo de datos.
3.
Reutilización de Código: Las funciones
anidadas permiten evitar la duplicación
de código, ya que las operaciones
comunes pueden ser encapsuladas
dentro de una función mayor y
reutilizadas en varios puntos dentro de
esa misma función.
4.
Control sobre el Ámbito: Las funciones
anidadas tienen acceso a las variables
de su función exterior, lo que permite
manipular datos de manera más
controlada. Esto es particularmente útil
cuando se quiere evitar la creación de
variables globales.
Aplicaciones y Usos Comunes de las Funciones
Anidadas
1.
Decoradores
en
Python:
Los
decoradores son una aplicación muy común de
las funciones anidadas. Un decorador es una
función que toma otra función como argumento
y devuelve una nueva función que usualmente
extiende o modifica el comportamiento de la
función original.
Ejemplo de decorador:
def decorador(func):
def funcion_modificada():
print("Antes de ejecutar la función")
Desventajas Potenciales de Usar Funciones
Anidadas
1.
Complejidad: Si se abusa de las
funciones anidadas, el código puede
volverse difícil de leer y mantener. Una
excesiva anidación puede complicar el
seguimiento del flujo del programa,
haciendo más difícil detectar errores o
comprender la lógica.
2.
Rendimiento: En algunos casos, las
funciones anidadas pueden tener un
impacto
en
el
rendimiento,
especialmente si se crean y eliminan de
manera frecuente. En ciertos lenguajes
de programación, cada vez que se
ejecuta la función externa, se crea un
nuevo contexto de ejecución para la
función anidada, lo que puede consumir
recursos adicionales.
3.
Dificultad
para
Depurar:
Las
funciones anidadas pueden hacer más
difícil la depuración del código, ya que
el seguimiento de los errores y de las
variables en múltiples niveles de
funciones puede complicarse.
func()
print("Después de ejecutar la función")
return funcion_modificada
@decorador
def funcion_simple():
print("Esta es una función simple")
funcion_simple()
En este caso, funcion_modificada es una función
anidada que envuelve el comportamiento de
funcion_simple. Los decoradores permiten extender el
comportamiento de las funciones de una manera modular y
reutilizable.
Beneficios de Usar Funciones Anidadas
1.
2.
Modularidad: Al usar funciones
anidadas, se puede dividir el código en
secciones más manejables, cada una
con una responsabilidad clara. Esto
facilita el mantenimiento y la
comprensión del código.
Encapsulamiento: Al definir una
función dentro de otra, se puede
restringir el acceso a la función
anidada desde fuera de la función que
[1] M. Lutz, Learning Python, Estados Unidos : 5th
Edition, 2013.
Descargar