在Python中,具有特殊功能的标识符称为关键字。关键字是Python语言自己已经使用的了,不允许开发者自己定义和关键字相同名字的标识符。本文主要介绍Python nonlocal 关键字(keyword)。

Python 关键字

例如:

在函数内部声明一个函数,该函数使用变量x作为非局部变量:

def myfunc1():
    x = "John"
    def myfunc2():
        nonlocal x
        x = "hello"
    myfunc2()
    return x

print(myfunc1())

1、定义和用法

nonlocal关键字用于在嵌套函数内部使用变量,其中变量不应属于内部函数。

使用关键字nonlocal声明该变量不是本地变量。

2、global与nonlocal的区别

1)两者的功能不同

global关键字修饰变量后标识该变量是全局变量,对该变量进行修改就是修改全局变量,而nonlocal关键字修饰变量后标识该变量是上一级函数中的局部变量,如果上一级函数中不存在该局部变量,nonlocal位置会发生错误(最上层的函数使用nonlocal修饰变量必定会报错)。

2)两者使用的范围不同

global关键字可以用在任何地方,包括最上层函数中和嵌套函数中,即使之前未定义该变量,global修饰后也可以直接使用,而nonlocal关键字只能用于嵌套函数中,并且外层函数中定义了相应的局部变量,否则会发生错误。

3、使用示例

例如:

与上述示例相同,但没有nonlocal关键字:

def myfunc1():
    x = "John"
    def myfunc2():
        x = "hello"
    myfunc2()
    return x

print(myfunc1())

3、相关函数

关键字global用于创建全局变量。

Python 关键字

推荐文档