From 347ab657ae33690a8df325af3e9c77eb96983bdf Mon Sep 17 00:00:00 2001 From: Chrisdev00 <134344269+Chrisdev00@users.noreply.github.com> Date: Mon, 17 Jun 2024 00:25:04 -0400 Subject: [PATCH] #24 - python y javascript --- .../24 - DECORADORES/javascript/Chrisdev00.js | 54 +++++++++++++++++ Roadmap/24 - DECORADORES/python/Chrisdev00.py | 59 +++++++++++++++++++ 2 files changed, 113 insertions(+) create mode 100644 Roadmap/24 - DECORADORES/javascript/Chrisdev00.js create mode 100644 Roadmap/24 - DECORADORES/python/Chrisdev00.py diff --git a/Roadmap/24 - DECORADORES/javascript/Chrisdev00.js b/Roadmap/24 - DECORADORES/javascript/Chrisdev00.js new file mode 100644 index 0000000000..fe8e9ba104 --- /dev/null +++ b/Roadmap/24 - DECORADORES/javascript/Chrisdev00.js @@ -0,0 +1,54 @@ +/* + * EJERCICIO: + * Explora el concepto de "decorador" y muestra cómo crearlo + * con un ejemplo genérico. + * + * DIFICULTAD EXTRA (opcional): + * Crea un decorador que sea capaz de contabilizar cuántas veces + * se ha llamado a una función y aplícalo a una función de tu elección. + */ + +var Car = function() { + var car = {ruedas: 4}; + pintar('red')(car); + return car +}; + +function pintar (c){ + return function(car){ + car.color= c; + }; +} + + +var myCar = Car() +console.log(myCar) + + + +/////////// ------------------------------ EXTRA ---------------------------------------- ///////////////// + +function contador(func) { + function funcionModificada(...args) { + funcionModificada.llamadas += 1; + console.log(`La función ${func.name} ha sido llamada ${funcionModificada.llamadas} veces`); + return func(...args); + } + funcionModificada.llamadas = 0; + return funcionModificada; +} + +function factorial(num) { + let res = 1; + for (let i = 1; i <= num; i++) { + res *= i; + } + return res; +} + +// Decorar la función factorial +const factorialConContador = contador(factorial); + +console.log(factorialConContador(5)); +console.log(factorialConContador(4)); +console.log(factorialConContador(3)); \ No newline at end of file diff --git a/Roadmap/24 - DECORADORES/python/Chrisdev00.py b/Roadmap/24 - DECORADORES/python/Chrisdev00.py new file mode 100644 index 0000000000..c9d1e7a655 --- /dev/null +++ b/Roadmap/24 - DECORADORES/python/Chrisdev00.py @@ -0,0 +1,59 @@ +""" +* EJERCICIO: +* Explora el concepto de "decorador" y muestra cómo crearlo +* con un ejemplo genérico. +* +* DIFICULTAD EXTRA (opcional): +* Crea un decorador que sea capaz de contabilizar cuántas veces +* se ha llamado a una función y aplícalo a una función de tu elección. +""" + +import time + +def calcularTiempo(fun): + + def funcionModificada(*args, **kwargs): + inicio = time.time() + resultado = fun(*args, **kwargs) + final = time.time() + print(f"El tiempo de ejecucion es: {final - inicio} segundos") + return resultado + + return funcionModificada + +@calcularTiempo +def sum_numeros(a, b): + return a + b + +@calcularTiempo +def imprimirNumeros(num): + for i in range(num): + print(i) + +print(sum_numeros(16556301655659919911, 896474544)) +imprimirNumeros(8) + + +########### --------------------------------- EXTRA ---------------------------------- ################## + +def contador(fun): + + def funcion_modificada(*args, **kwargs): + funcion_modificada.llamadas += 1 + print(f"La funcion {fun.__name__} ha sido llamada {funcion_modificada.llamadas} veces") + return fun(*args, **kwargs) + + funcion_modificada.llamadas = 0 + return funcion_modificada + +@contador +def factorial(num): + res = 1 + for i in range(1, num+1): + res = res * i + return res + + +print(factorial(5)) +print(factorial(4)) +print(factorial(3)) \ No newline at end of file