說說Python中變數的作用域?
- 2019 年 11 月 12 日
- 筆記
問:說說Python中變數的作用域?
答:作用域是針對變數而出現。當變數被賦值的時候,變數當前的位置就決定了變數能夠被訪問到的範圍,這個範圍就叫變數的作用域,也可以叫變數的命名空間。
在 Python 中存在 4 類作用域:本地作用域、嵌套作用域、全局作用域、內置作用域。python按照LEGB原則搜索變數,即優先順序L>E>G>B。
L (Local) 局部作用域 E (Enclosing) 閉包函數外的函數中 G (Global) 全局作用域 B (Built-in) 內建作用域


# dir 為python內建函數 dir = 1 # Global def outer(): dir = 2 # Enclosing def inner(): dir = 3 # Local return dir return inner print(outer()()) # 輸出3
1、本地作用域是在函數內部生成的變數命名空間。
2、嵌套作用域是在類、嵌套函數內部生成的命名空間。
3、全局作用域指的是一個模組,即 Python 的源碼文件(.py 文件)。
4、內置作用域其實也是一個 Python 的內置模組(builtins),只是在程式啟動的時候,Python 虛擬機會自動載入這個模組,所以在程式的任何地方都可以使用內置模組里的變數。例:print 函數