五、函数_10.闭包函数

闭包函数

在一个函数中,外函数的返回值是内函数,且内函数调用了外函数中的局部变量,这个内函数叫闭包函数
作用:为了保护局部变量不受全局的影响,同时在函数内可以正常使用

使用全局变量
m = 0
def A() :
    global m
    m += 100

def B() :
    global m
    m += 200

def C() :
    global m
    m -= 50

A()
B()
C()
print(m)
m = 0    # 全局变量很容易被更改
print(m)

250
0
使用闭包函数保护局部变量
def deal() :
    capital = 0

    def sale() :
        nonlocal capital
        capital += 350
        print(capital)

    return sale

res = deal()
print(res,type(res))
res()
res()
res()
# print(capital)    此时在全局不能再对capital这个局部变量进行任何操作

<function deal.<locals>.sale at 0x000000EB09F03318> <class 'function'>
350
700
1050
函数名.closure

功能:检测一个函数是否为闭包函数,若是闭包函数,值为cell,否则值为None

print(res.__closure__)
print(deal.__closure__)

(<cell at 0x000000EB0BE323A8: int object at 0x000000EB135E2A70>,)
None
上一篇:HTML转义字符大全


下一篇:软件工程师因盗窃 20TB 个人数据,面临六项新指控