python:LEGB識別符號解析順序
"""
LEGB查詢規則:
L locals 區域性變數,當前所在名稱空間(如函式,模組等) 注意,包括函式的引數(形參)
E Enclosing Function 閉包空間(外部巢狀函式的名稱空間)
G Globals 全域性變數,某個python模組的名稱空間
B Builtins python內建模組的名稱空間
"""
key=`Hello`#模組全域性
def test():
print(key)#全域性,輸出:Hello
def test2(key):
print(key,end=`***`)#區域性(形參),輸出 key引數傳入的值
key=key+str(512)
print(key)
def test3():
#print(key)
""" 這裡↑遵循LEGB規則解析識別符號key的時候,
在函式locals中發現了key=1024
key不再當作全域性變數解析,所以開啟註釋後這裡會報錯:
local variable `key` referenced before assignment
"""
key=1024#注意和前面的test函式比較
print(key)
def test4():
global key
#若要在模組內的某個函式裡面修改模組全域性變數,一定要有global關鍵字
key=1024
if __name__ == `__main__`:
test()
test2(`hi`)
test3()
test4()
test()
執行結果:
Hello
hi***hi512
1024
1024
Process finished with exit code 0
這個問題使用pycharm程式設計時候,編輯器是可以用高亮給你提示出來的……So,有個好的IDE真實省心省力啊O(∩_∩)O
相關文章
- python的識別符號Python符號
- 識別符號符號
- JavaScript 識別符號JavaScript符號
- 命令識別符號(轉)符號
- 06:合法 C 識別符號符號
- 《Effective Go》--空白識別符號Go符號
- oracle 識別符號規範Oracle符號
- aix 系統識別符號AI符號
- 使用去中心化識別符號 (DID) 作為識別符號元系統中心化符號
- Java資料型別、識別符號Java資料型別符號
- Python的方法解析順序(MRO)[轉]Python
- python之uuid通用唯一識別符號模組PythonUI符號
- <Python>識別符號、變數的定義與使用Python符號變數
- 2.3Python基礎語法(1):識別符號Python符號
- C語言-識別符號命名C語言符號
- 識別符號與關鍵字符號
- java基本無法-識別符號Java符號
- Oracle 12.2 長識別符號Oracle符號
- 標準HTML識別符號 (轉)HTML符號
- Android開發 - UUID 類通用唯一識別符號解析AndroidUI符號
- 修改系統識別raid卡順序AI
- Python中的識別符號有哪些基礎原則?Python符號
- URI(統一資源識別符號)符號
- SCSS &父選擇器識別符號CSS符號
- Windows安全識別符號(SID)概述Windows符號
- Hibernate識別符號生成器符號
- 字串切片識別符號是什麼字串符號
- JavaSE 關鍵字和識別符號Java符號
- go——識別符號的命名規範Go符號
- 關鍵字、資料型別、識別符號資料型別符號
- Java 修飾符順序問題Java 修飾符
- 初識順序容器
- Python行結構與縮排、 識別符號和保留字Python符號
- Python中合法識別符號需要滿足什麼條件?Python符號
- AIX 域名解析順序AI
- python教程:屬性查詢順序,資料描述符Python
- JAVA-識別符號、變數、資料型別Java符號變數資料型別
- python運算子及優先順序順序Python