yan061

导航

python global 和 nonlocal关键字

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

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

num = 1

def func():
    print(num)

func()
=>输出为 1

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

num = 1

def func():
    num += 1
    print(num)

func()
=>UnboundLocalError: local variable 'num' referenced before assignment

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

num = 1

def func():
    global num
    num += 1
    print(num)

func()
=> 输出为2

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

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

  此时也可以使用global

def func():
    global num
    num = 1
func()
print(num)
=> 输出为1

  

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

def outer():
    num = 2
    def inner():
        print(num)
    return inner()

outer()
=> 输出为2

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

def outer():
    num = 2
    def inner():
        nonlocal num
        num += 1
        print(num)
    return inner()

outer()
=> 输出为3

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

 

posted on 2022-01-10 21:06  yan061  阅读(33)  评论(0编辑  收藏  举报