Andrés Cardona
PreguntaHola, quisiera que me ayudaran, por favor, a entender por qué pesar que estoy aplicando (*args, **kwargs), en consola me arroja un error TypeError, este es el código
from datetime import datetime def execution_time(func): def wrapper(*args, **kwargs): initial_time = datetime.now() func(*args, **kwargs) final_time = datetime.now() time_elapsed = final_time - initial_time print('Pasaron ' + str(time_elapsed.total_seconds()) + ' segundo') return wrapper @execution_time def random_func(): for _ in range(1, 100000000): pass @execution_time def suma(a: int, b: int) -> int: return a + b @execution_time def saludo(nombre = 'Andrés'): print('Hola' + nombre) random_func() saludo() suma(5 + 5)
esta es la salida en consola:
Pasaron 2.43186 segundo HolaAndrés Pasaron 0.000997 segundo Traceback (most recent call last): File "D:\Documentos\PLATZI\Escuela_Data_Science\Curso_Python_Profesional\decoradores.py", line 56, in <module> suma(5 + 5) File "D:\Documentos\PLATZI\Escuela_Data_Science\Curso_Python_Profesional\decoradores.py", line 34, in wrapper func(*args, **kwargs) TypeError: suma() missing 1 required positional argument: 'b'

José B. Méndez Padín
Porque en la función suma estás sumando los valores 5 + 5. Por lo tanto, le estás pasando un valor, 10. Deberías poner una coma en vez del signo más.