python - global、nonlocal,杂记

本文总结了Python中的全局变量与非局部变量(global和nonlocal)的使用规则。global关键字允许在函数内部访问和修改全局变量,而nonlocal则用于在函数内部修改上一层函数的作用域中的变量。需要注意的是,nonlocal必须在引用变量前声明,并且只能在第二层及以下的函数中使用。未声明或不可修改的变量使用nonlocal会引发错误。
摘要由CSDN通过智能技术生成

参考tutorial.pdf 9.2 Python 作用域和命名空间

总结:
只有在def一开始就声明的一个变量,他与上次的同名变量没有任何关系,可以随意使用

如果在def中未声明而直接使用一个变量,他会向上寻找,使用第一次遇到的同名变量的数值,不能赋值。只能只读,如果该变量是list,可以执行一些方法的操作。

global和nonlocal,是一种特殊的同步变量名的方式,同样使用前,这层def中不能用过该变量名

nonlocal的上层不能是主体,nonlocal向上追溯直至第一层def,需要有一个独立的变量名,如总结1,如果期间先遇到global 变量,报错

global,可以理解为在主体中声明该变量,如果主题中有了,就同时使用其空间和数值,如果没有,就在主题中没有,就算是在主体中新建了一个未赋值变量,而这层函数和主体同名或新建函数一心同体。只是下层不能用nonlocal调用这个变量

因为过程太长,所以转开一小篇文章存放总结:python - 官方简易文档篇(1)

def a0():
    print(a)
    def a1():
        a=1
        print(a,"a11")
        def a2():
            a=2
            print(a,"a21")
            def a3():
                def a4():
                    nonlocal a
                    a=3
                a4()
            a3()
            print(a,"a22")
        a2()
        print(a,"a12")
    a1()
    print(a)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值