In [1]:
#closure
def adder(outer_argument): # outer function
def adder_inner(inner_argument): # inner function, nested function
return outer_argument + inner_argument # Notice outer_argument
return adder_inner
add5 = adder(5) # a function that adds 5 to its argument
add7 = adder(7) # a function that adds 7 to its argument
print add5(3) # prints 8
print add7(3) # prints 10
In [4]:
#yield
def concat(a, b) :
for i in a :
yield i
#end for
for i in b :
yield i
for i in concat([1,2,3], [5,6,7]):
print i
In [10]:
f = lambda x: x[1]
f((1,2))
Out[10]: