Skip to content

Commit 87a4f7b

Browse files
authored
Merge pull request mouredev#5299 from adra-dev/main
#24 - Python
2 parents 4e73dc4 + 3c56015 commit 87a4f7b

File tree

1 file changed

+76
-0
lines changed

1 file changed

+76
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
"""
2+
EJERCICIO:
3+
Explora el concepto de "decorador" y muestra cómo crearlo con un
4+
ejemplo genérico.
5+
6+
DIFICULTAD EXTRA(opcional):
7+
Crea un decorador que sea capaz de contabilizar cuántas veces se ha
8+
llamado a una función y aplicalo a una función de tu elección.
9+
10+
by adra-dev
11+
"""
12+
13+
"""
14+
Decoradores:
15+
Un decorador es un modificador de un metodo o funcion que "envuelve"
16+
el codigo de dicho metodo con instrucciones adicionales. Regularmente
17+
vamos a hacer uso de los decoradores para extender el uso de una
18+
funcion ya sea porque no podemos modificar la funcion o no es
19+
conveniente hacerlo.
20+
21+
Los decoradores nos sirven para realizar tareas muy complejas y
22+
repetitivas como lo son conectarse a una BD, enviar un email,
23+
leer un archivo excel o cualquier tarea que se necesite realizar
24+
antes o despues de llamar a la funcion a decorar.
25+
"""
26+
27+
def funcion_a(funcion_b):
28+
29+
def funcion_c():
30+
print(">>> Antes del llamado.")
31+
funcion_b()
32+
print(">>> Despues del llamado.")
33+
34+
return funcion_c
35+
36+
37+
@funcion_a
38+
def saludar():
39+
print('Hola, nos encontramos en una fucnion')
40+
41+
saludar()
42+
43+
44+
"""
45+
Extra
46+
"""
47+
48+
def print_call_counter(function):
49+
def counter_function():
50+
counter_function.call_count += 1
51+
print(
52+
f"La funcion '{function.__name__}' se ha llamado {counter_function.call_count} veces.")
53+
return function
54+
55+
counter_function.call_count = 0
56+
return counter_function
57+
58+
59+
60+
@print_call_counter
61+
def example_function():
62+
pass
63+
64+
65+
@print_call_counter
66+
def saludar():
67+
print('Hola, nos encontramos en una fucnion')
68+
69+
70+
example_function()
71+
saludar()
72+
saludar()
73+
saludar()
74+
example_function()
75+
saludar()
76+
saludar()

0 commit comments

Comments
 (0)