Python 變數的基本作用域規則是什麼?


變數根據其作用域分為全域性變數和區域性變數。全域性變數和區域性變數的主要區別在於,全域性變數可以在整個程式中全域性訪問,而區域性變數只能在其定義的函式或程式碼塊內訪問。

區域性變數是在函式內部定義的變數,其作用域僅適用於該函式,這與在任何函式外部定義並具有全域性作用域的全域性變數相反。換句話說,我們可以說,雖然全域性變數可以在整個程式和所有函式內部訪問,但區域性變數只能在其初始化的函式內部訪問。區域性變數是在函式內建立的變數,並且是該函式獨有的。它在任何地方都無法在函式外部訪問。讓我們檢查一下區域性變數的建立。

Python 中的區域性變數

區域性變數是一種特定型別的變數,可以在宣告它的方法或語句塊定義變數的作用域和範圍時使用。foreach 語句將其用作迭代變數,特定 catch 子句將其用作異常變數,而 using 語句將其用作資源變數。

在宣告它的方法或語句塊中,它還可以用作其值不能更改的常量。語言整合查詢 (LINQ) 返回匿名型別,可以使用隱式型別的區域性變數來處理,其型別由編譯器從其右側的表示式推斷。這允許為每個 LINQ 結果集建立一個自定義型別。

示例

讓我們來看一個建立區域性變數的示例。

def f(): #local variable L = "Hello World" print(L) # Driver code f()

輸出

輸出如下所示。

Hello World

全域性變數

只有在函式內為全域性變數賦值或更改全域性變數時,我們才需要使用 global 關鍵字。對於列印和訪問,不需要 global。由於在 f() 內部對 s 進行了賦值,因此 Python“假設”我們想要一個區域性變數,這就是第一句話丟擲錯誤的原因。如果在函式內部修改或建立變數而沒有將其定義為全域性變數,則它被視為區域性變數。

示例

以下是建立全域性變數並訪問它的示例。

pi = 3.142 radius = 8 def circle(): #radius is a global varible global radius radius = radius * 2 area_of_circle = pi * (radius) ** 2 print("The area of circle is: ", area_of_circle) circle()

輸出

產生的輸出如下所示。

The area of circle is:  804.352

封閉或非區域性作用域

在巢狀函式中指定的變數稱為非區域性變數。它表示變數的作用域既不能是區域性的,也不能是全域性的。nonlocal 關鍵字用於生成非區域性變數。在下面的程式碼中,我們建立了外部函式()。內部函式在外部函式的作用域內定義()。內部() 函式在外部() 函式的作用域內定義。對在內部() 函式中宣告的非區域性變數所做的更改反映在外部函式的輸出中。

示例

以下示例演示了用法

def Outer(): x = "local" def Inner(): nonlocal x x = "nonlocal" print("inner:", x) Inner() print("outer:", x) Outer()

輸出

輸出如下所示。

inner: nonlocal
outer: nonlocal

更新於: 2022年9月16日

394 次檢視

啟動您的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.