python global用法和nonlocal关键字

python global用法和nonlocal关键字

global 和 nonlocal关键字

img

当内部作用域想修改外部作用域的变量时,就要用到global和nonlocal关键字了。

局部作用域内变量想修改闭包函数外的变量用:nonlocal

闭包函数外的函数想修改全局作用域的变量用:global

以下实例修改全局变量 num:

实例(Python 3.0+)
#!/usr/bin/python3
 
num = 1
def fun1():
    global num  # 需要使用 global 关键字声明
    print(num) 
    num = 123
    print(num)
fun1()
print(num)

以上实例输出结果:

1
123
123

如果要修改嵌套作用域(enclosing 作用域,外层非全局作用域)中的变量则需要 nonlocal 关键字了,如下实例:

实例(Python 3.0+)
\#!/usr/bin/python3  
def outer():    
    num = 10    
    def inner():        
        nonlocal num   # nonlocal关键字声明        
        num = 100        
        print(num)    
    inner()    
    print(num) 
outer()
Test:

(1)测试global能否修改闭包函数外的变量:否(global直接作用于全局)

(2)测试nonlocal能否修改多层闭包函数外的变量:能(nonlocal作用于闭包函数内第一个相同变量名的变量,除全局变量)

(3)测试nonlocal能否修改全局作用域的变量:否(直接报错)

总结:修改全局变量用:global

​ 修改闭包函数外变量用:nonlocal

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

参考:

https://www.runoob.com/python3/python3-namespace-scope.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值