函数(七)-嵌套作用域

嵌套作用域

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
posted @ 2020-12-04 15:23  小杜打醋尢买布  阅读(101)  评论(0)    收藏  举报