Python课程第九天_下午_课程笔记(函数嵌套和闭包)

Day_09_PM_Function_Nesting_And_Closure

# 函数嵌套
def f1():
    print('f1')

    def f2():
        print('f2')

    return f2


f = f1()  # f = f2
f()  # f2()


# f1()()  # 跟上面等价

# 带参数的函数嵌套
def f3(x):
    print('f3')

    def f4(y):
        print('f4', x, y)

    return f4


# f3(11)(22)
f = f3(11)
f(22)


# 闭包
#   外部函数 嵌套 内部函数, 且返回内部函数, 则外部函数的参数或变量不会被释放

# 局部变量:
#   1.变量的内存会被回收
#   2.不会被污染(不会被函数外部修改)
def fn1():
    x = 1


# 全局变量
#   1.变量不会被回收
#   可能会被污染(可能会被修改)

# 闭包
#   1.变量不会被回收
#   2.变量不会被污染
def outer():
    n = 10

    def inner():
        nonlocal n
        n += 1
        print('n =', n)

    return inner


f = outer()  # f = inner
f()  # 11
f()  # 12
f()  # 13

猜你喜欢

转载自blog.csdn.net/weixin_44298535/article/details/107700807