嵌套作用域
def f():
x = 4
action = lambda n,y=x:y**n
# def action(n,y=x):
# return y**n
return action
a = f()
# print(a)
b = a(3) # action(n,y=x)
print(b) # 4**3 = 64
d = a(3,3)
print(d) # 3**3=27
# 练习2:请说出li[0](2)的值,并且说明为什么
def f():
li = []
for i in range(5):
li.append(lambda x:i**x)
# def f2(x):
# return i**x
# li.append(f2)
return li
li = f()
print(li[0](3)) # i**3 4**3 = 64
print(li[1](3)) # i**3 4**3 = 64
print(li[2](3)) # i**3 4**3 = 64
print(li[3](3)) # i**3 4**3 = 64
print(li[4](3)) # i**3 4**3 = 64
# 如何改进是输出结果为: 0 1 8 27 64
def f():
li = []
for i in range(5):
# li.append(lambda x:i**x)
def f2(x,y=i):
return y**x
li.append(f2)
return li
li = f()
print(li[0](3)) # i**3
print(li[1](3)) # i**3
print(li[2](3)) # i**3
print(li[3](3)) # i**3
print(li[4](3)) # i**3