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
廣告