forked from mouredev/Hello-Python
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path04_higher_order_functions.py
69 lines (37 loc) · 1.18 KB
/
04_higher_order_functions.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
# Clase en vídeo: https://youtu.be/TbcEqkabAWU?t=10172
### Higher Order Functions ###
from functools import reduce
def sum_one(value):
return value + 1
def sum_five(value):
return value + 5
def sum_two_values_and_add_value(first_value, second_value, f_sum):
return f_sum(first_value + second_value)
print(sum_two_values_and_add_value(5, 2, sum_one))
print(sum_two_values_and_add_value(5, 2, sum_five))
### Closures ###
def sum_ten(original_value):
def add(value):
return value + 10 + original_value
return add
add_closure = sum_ten(1)
print(add_closure(5))
print((sum_ten(5))(1))
### Built-in Higher Order Functions ###
numbers = [2, 5, 10, 21, 3, 30]
# Map
def multiply_two(number):
return number * 2
print(list(map(multiply_two, numbers)))
print(list(map(lambda number: number * 2, numbers)))
# Filter
def filter_greater_than_ten(number):
if number > 10:
return True
return False
print(list(filter(filter_greater_than_ten, numbers)))
print(list(filter(lambda number: number > 10, numbers)))
# Reduce
def sum_two_values(first_value, second_value):
return first_value + second_value
print(reduce(sum_two_values, numbers))