global和nonlocal

global
代码

# global关键字用来在函数或其他局部作用域中使用全局变量。但是如果不修改全局变量也可以不使用global关键字。
gcount = 0


def global_test():
    print(gcount)


def global_counter():
    global gcount
    gcount += 1
    return gcount

gc = global_counter
def global_counter_test():
    print(gc(),gc(),gc())


global_counter_test()

输出

1 2 3

nonlocal
代码

# nonlocal关键字用来在函数或其他作用域中使用外层(非全局)变量。
def make_counter():
    count = 0

    def counter():
        nonlocal count
        count += 1
        return count

    return counter


def make_counter_test():
    mc = make_counter()
    print(mc(),mc(),mc())


make_counter_test()


def tester(statrt):
    state = statrt

    def nestrd(lable): # 工厂函数
        nonlocal state
        lable += 1
        return lable, state

    return nestrd


f = tester('zhou')
print(f(2))
print(f(3))
print(f(4))

输出

1 2 3
(3, 'zhou')
(4, 'zhou')
(5, 'zhou')
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值