Created
May 28, 2011 19:32
-
-
Save gennad/997145 to your computer and use it in GitHub Desktop.
Wrapper
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#-*- coding: utf-8 -*- | |
""" | |
Написать функцию-фабрику, которая будет возвращать функцию сложения с аргументом. | |
>>> add5 = addition(5) # функция addition возвращает функцию сложения с 5 | |
>>> add5(3) # вернет 3 + 5 = 8 | |
8 | |
>>> add5(8) # вернет 8 + 5 = 13 | |
13 | |
>>> add8 = addition(8) | |
>>> add8(2) # вернет 2 + 8 = 10 | |
10 | |
>>> add8(4) # вернет 4 + 8 = 12 | |
12 | |
Написать варианты с обычной "внутренней" и анонимной lambda-функцией. | |
""" | |
def addition(num): | |
def f(a): | |
return a + num | |
return f | |
add5 = addition(5) | |
print add5(3) | |
# 8 | |
print add5(8) | |
# 13 | |
add8 = addition(8) | |
print add8(2) # вернет 2 + 8 = 10 | |
# 10 | |
print add8(4) # вернет 4 + 8 = 12 | |
# 12 | |
def addition2(num): | |
return lambda a: a + num | |
add5 = addition2(5) | |
print add5(3) | |
# 8 | |
print add5(8) | |
# 13 | |
add8 = addition2(8) | |
print add8(2) # вернет 2 + 8 = 10 | |
# 10 | |
print add8(4) # вернет 4 + 8 = 12 | |
# 12 | |
""" | |
Написать фабрику, аналогичную п.2, но возвращающей список таких функций | |
>>> additionals = addition_range(0, 5) # список из функций сложения от 0 до 5 включительно | |
т.е. аналогичное [add0, add1, add2, add3, add4, add5] | |
""" | |
def addition_range(begin, end): | |
result = [] | |
for i in range(begin, end+1): | |
func = lambda a: a + i | |
result.append(func) | |
return result | |
additionals = addition_range(0, 5) | |
print additionals |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment