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 關鍵字用於生成非區域性變數。在下面的程式碼中,我們在外部函式中嵌套了內部函式()。Inner() 函式在 outer() 函式的作用域內定義。對在 inner() 函式中宣告的非區域性變數所做的更改反映在外部函式的輸出中。
示例
以下示例演示了用法
def Outer(): x = "local" def Inner(): nonlocal x x = "nonlocal" print("inner:", x) Inner() print("outer:", x) Outer()
輸出
輸出如下所示。
inner: nonlocal outer: nonlocal
資料結構
網路
關係資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP