yan061

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

python global 和 nonlocal关键字

global 是把某个变量变成全局变量

场景1:当函数里面想改变一个不可变的数据类型

1
2
3
4
5
6
num = 1
 
def func():
    print(num)
 
func()<br>=>输出为 1

但是当我们想在函数内改变这个num时,会报错。

1
2
3
4
5
6
7
num = 1
 
def func():
    num += 1
    print(num)
 
func()<br>=>UnboundLocalError: local variable 'num' referenced before assignment

此时我们就可以用global num来声明全局变量

1
2
3
4
5
6
7
8
num = 1
 
def func():
    global num
    num += 1
    print(num)
 
func()<br>=> 输出为2

场景2:在函数外想使用函数内的变量

1
2
def func():
    num = 1func()print(num)<br>=> NameError: name 'num' is not defined

  此时也可以使用global

1
2
3
4
5
def func():
    global num
    num = 1
func()
print(num)<br>=> 输出为1

  

nonlocal 内函数中使用外函数的变量

1
2
3
4
5
6
7
def outer():
    num = 2
    def inner():
        print(num)
    return inner()
 
outer()<br>=> 输出为2

同样如果你想改变这个num,对不起,不行。此时就可以用nonlocal

1
2
3
4
5
6
7
8
9
def outer():
    num = 2
    def inner():
        nonlocal num
        num += 1
        print(num)
    return inner()
 
outer()<br>=> 输出为3

可以理解为如果内函数想改变外函数的变量的值,那么就使用nonlocal关键字  

 

posted on   yan061  阅读(34)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示