快速了解 global和nonlocal

global和nonlocal 详解认知


#global只改变全局变量,nonlocal只改变上一层的局部变量。  global和nonlocal在哪层就使用哪层的变量分别充当全局或上一层局部变量。
#当nonlocal的上一层是全局变量  而其他层使用global也改变全局变量,则报错。
#无论global还是nonlocal  都是改变全局变量或上一层局部变量的引用地址。   而不是覆盖   原   全局变量或局部变量的地址上的内容。
"""如例子所示  当go1使用了global最外层原本应显示为num=11的数值被改成了10,但是原本11的地址还存在,打印的是num=10的地址,因此说明
只改变了num的引用地址,并没有覆盖原num=11的地质内容"""



import ctypes
num =11
def go():
    num=9
    
    def go1():
        global num
        num = 10

    print(num,id(num))#未使用globa的num值 2
    go1()
    print(num,id(num))#使用global的num值,未对中间的num存在影响  3



k = id(num)
print(num,k)#一开始的全局num值  1
go()
print(num,id(num))#使用global后的num值  4
get1=ctypes.cast(k,ctypes.py_object).value
print(get1)#使用了global后原num=11的值依然存在,地址并没有改变  5

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值