fork download
  1. import time
  2.  
  3. # Define o contador de funções decoradas:
  4. decorated_functions = 0
  5.  
  6. # Definição do decorador:
  7. def decorator(function):
  8.  
  9. # Importa para o escopo local a variável global:
  10. global decorated_functions
  11.  
  12. # Incrementa o contador:
  13. decorated_functions += 1
  14.  
  15. # Inicializa o horário da última chamada:
  16. last_call = None
  17.  
  18. # Define a função de retorno:
  19. def wrapper(*args, **kwargs):
  20.  
  21. # Exibe e atualiza o horário da última chamada:
  22. print("Última chamada:", last_call)
  23. last_call = time.time()
  24.  
  25. # Chama a função decorada:
  26. function(*args, **kwargs)
  27.  
  28. return wrapper
  29.  
  30. @decorator
  31. def foo():
  32. print("Foo executada")
  33.  
  34. foo()
Runtime error #stdin #stdout #stderr 0.02s 28384KB
stdin
Standard input is empty
stdout
Standard output is empty
stderr
Traceback (most recent call last):
  File "./prog.py", line 34, in <module>
  File "./prog.py", line 22, in wrapper
UnboundLocalError: local variable 'last_call' referenced before assignment