Last active 1728455732

nithir's Avatar nithir revised this gist 1728455731. Go to revision

1 file changed, 5 insertions, 1 deletion

decorator.py

@@ -58,4 +58,8 @@ def Fibonacci(n):
58 58 def gFibo(NUMBER):
59 59 Fibonacci(NUMBER)
60 60
61 - gFibo(12)
61 + gFibo(12)
62 +
63 + #Initialisation de 'gFibo (12,) {}'
64 + #Fin de la fonction 'gFibo'
65 + #Durée de l’exécution de la fonction 'gFibo' --> 7.99e-04s

nithir's Avatar nithir revised this gist 1728455698. Go to revision

1 file changed, 61 insertions

decorator.py(file created)

@@ -0,0 +1,61 @@
1 + #!/usr/bin/env python3.8
2 +
3 + from functools import wraps
4 + # wraps est un décorateur qui permet de décorer la fonction wrapper
5 + # du décorateur que l'on construit pour le rendre transparent.
6 + # comme ça on peut utiliser en cascade une suite de décorateur, de
7 + # l’extérieur, on ne vois que les informations de la fonction décoré.
8 +
9 + def logging(func):
10 + """
11 + Un décorateur qui log l'activité d'un script.
12 + (Ok, en vrai ça fait un print, mais ça pourrait logger !)
13 + """
14 + @wraps(func)
15 + def wrapper(*args, **kwargs):
16 + print("Initialisation de '{} {} {}'".format(func.__name__, args, kwargs))
17 + res = func(*args, **kwargs)
18 + print("Fin de la fonction '{}'".format(func.__name__))
19 + return res
20 + return wrapper
21 +
22 + def benchmark(func):
23 + """
24 + Un décorateur qui affiche le temps qu'une fonction met à s'éxécuter
25 + """
26 + import time
27 + @wraps(func)
28 + def wrapper(*args, **kwargs):
29 + t = time.perf_counter()
30 + res = func(*args, **kwargs)
31 + #log.debug("Durée de l’exécution de la fonction '{}' --> {:0.2e}s".format(func.__name__, time.perf_counter()-t))
32 + print("Durée de l’exécution de la fonction '{}' --> {:0.2e}s".format(func.__name__, time.perf_counter()-t))
33 + return res
34 + return wrapper
35 +
36 + def Fibonacci(n):
37 +
38 + # Check if input is 0 then it will
39 + # print incorrect input
40 + if n < 0:
41 + print("Incorrect input")
42 +
43 + # Check if n is 0
44 + # then it will return 0
45 + elif n == 0:
46 + return 0
47 +
48 + # Check if n is 1,2
49 + # it will return 1
50 + elif n == 1 or n == 2:
51 + return 1
52 +
53 + else:
54 + return Fibonacci(n-1) + Fibonacci(n-2)
55 +
56 + @benchmark
57 + @logging
58 + def gFibo(NUMBER):
59 + Fibonacci(NUMBER)
60 +
61 + gFibo(12)
Newer Older