Python语言编程之LEGB变量作用域法则
Python 在查找"名稱"時(shí),是按照 LEGB 規(guī)則查找的:
Local-->Enclosed-->Global-->Built in
Local??? 指的就是函數(shù)或者類的方法內(nèi)部
Enclosed 指的是嵌套函數(shù)(一個(gè)函數(shù)包裹另一個(gè)函數(shù),閉包)
Global?? 指的是模塊中的全局變量
Built in 指的是 Python 為自己保留的特殊名稱
---- 來源于《Python學(xué)習(xí)手冊(cè)》
Python的變量名解析機(jī)制稱為:LEGB法則。L:本地作用域;E:上一層結(jié)構(gòu)中def或lambda的本地作用域;G:全局作用域;B:內(nèi)置作用域
LEGB作用域查找原則:當(dāng)引用一個(gè)變量時(shí),Python按以下順序依次進(jìn)行查找:從本地變量中,在任意上層函數(shù)的作用域,在全局作用域,最后在內(nèi)置作用域中查找。第一個(gè)能夠完成查找的就算成功。變量在代碼中被賦值的位置通常就決定了它的作用域。在Python3.0中,nonlocal聲明也可以迫使名稱映射到函數(shù)內(nèi)部的作用域中,而不管是否對(duì)其賦值。
這些規(guī)則僅對(duì)簡(jiǎn)單的變量名有效。
總結(jié)
以上是生活随笔為你收集整理的Python语言编程之LEGB变量作用域法则的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C++20 - 下一个大版本功能确定
- 下一篇: 机械工业出版社之道格·赫尔曼《Pytho