Python nonlocal关键字



Python 的nonlocal关键字用于指示函数内部(即嵌套函数)中的一个变量并非局部于该函数,这意味着它位于外部函数中。

如果需要在嵌套函数中更改非局部参数的值,则必须使用nonlocal关键字定义该非局部参数。否则,嵌套函数将使用该名称创建一个局部变量。这是一个区分大小写的关键字。

语法

以下是Python nonlocal关键字的语法:

nonlocal

示例

以下是Python nonlocal关键字的基本语法:

def function1():  
    var1 = 200  
    def function2():  
        nonlocal var1  
        var1 = 3  
        print("The value inside the inner function: ", var1)  
    function2()  
    print("The value inside the outer function: ", var1)  
  
function1()  

输出

以下是上述代码的输出:

The value inside the inner function:  3
The value inside the outer function:  3

使用全局变量和非局部变量

当我们定义了一个同名的非局部变量和全局变量时,将会导致SyntaxError(语法错误)。

示例

这里,我们定义了一个全局变量global_var,值为Tutotialspoint,以及一个非局部变量global_var,值为Tp,这导致了错误,因为两个变量名相同:

global global_var = "Tutotialspoint"
def funtion1():
    def funtion2():
        nonlocal global_var
        global_var = "Tp"
        print("The value of inside function: ", global_var)
    
    funtion2()
    print("The value of outside function: ", global_var)
    
function1()

输出

以下是上述代码的输出:

File "/home/cg/root/54869/main.py", line 1
    global global_var = "Tutotialspoint"
                      ^
SyntaxError: invalid syntax

在多个嵌套函数中使用nonlocal关键字

嵌套函数是指在一个函数中定义多个函数的函数。nonlocal关键字用于嵌套函数中,引用最近封闭作用域中非全局的变量。

非局部变量允许修改在外部(但非全局)函数作用域中定义的变量,使嵌套函数能够访问和更改该变量的值。

示例

def function():
    var1 = 'Welcome to Tutorix'
    def function1():
        var1= 'Welcome to Tutorialspoint'
        def function2():
            nonlocal var1
            print("The value of nonlocal variable:", var1)
            var1 = "Python Tutorials"
            print("The value of nonlocal variable: ", var1)
        
        function2()
    
    function1()
    print("The value of outside function: ",var1)
function()

输出

以下是上述代码的输出:

The value of nonlocal variable: Welcome to Tutorialspoint
The value of nonlocal variable:  Python Tutorials
The value of outside function:  Welcome to Tutorix
python_keywords.htm
广告