-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path033FunctionsDecorators.py
78 lines (53 loc) · 1.32 KB
/
033FunctionsDecorators.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
def get_math_function(operation): # '+' or '-'
def add(num1, num2):
return num1 + num2
def sub(num1, num2):
return num1 - num2
if operation == "+":
return add
elif operation == "-":
return sub
add_function = get_math_function("+")
sub_function = get_math_function("-")
print(add_function(3, 5))
print(sub_function(7, 2))
# Decorating Functions
def title_decorator(print_name_function):
def wrapper():
print("Professor:")
print_name_function()
return wrapper()
def print_my_name():
print("Mike")
def print_joen_name():
print("Joen")
decorated_function = title_decorator(print_my_name)
decorated_function()
# Decorators
def title_decorator(print_name_function):
def wrapper():
print("Professor:")
print_name_function()
return wrapper
@title_decorator
def print_my_name():
print("Mike")
@title_decorator
def print_joen_name():
print("Joen")
print_my_name()
print_joen_name()
# Decorators w/ Parameters
def title_decorator(print_name_function):
def wrapper(*args, **kwargs):
print("Professor:")
print_name_function(*args, **kwargs)
return wrapper
@title_decorator
def print_my_name(name, age):
print(name + " you are " + str(age))
print_my_name("Smd", 23)
@title_decorator
def print_joen_name(name):
print(name)
print_joen_name("Joen")