Python中的作用域是什麼
python中的作用域有4種:
搜尋變數的優先順序順序依次是(LEGB):
作用域區域性 > 外層作用域 > 當前模組中的全域性 > python內建作用域。
number = 10 # number 是全域性變數,作用域在整個程式中 def test(): print(number) a = 8 # a 是區域性變數,作用域在 test 函式內 print(a) test()
執行結果:
10 8
def outer(): o_num = 1 # enclosing i_num = 2 # enclosing def inner(): i_num = 8 # local print(i_num) # local 變數優先 print(o_num) inner() outer()
執行結果:
8 1
num = 1 def add(): num += 1 print(num) add()
執行結果:
UnboundLocalError: local variable 'num' referenced before assignment
相關推薦:《》
如果想在函式中修改全域性變數,需要在函式內部在變數前加上global關鍵字。
num = 1 # global 變數 def add(): global num # 加上 global 關鍵字 num += 1 print(num) add()
執行結果:
2
同理,如果希望在內層函式中修改外層的 enclosing 變數,需要加上 nonlocal 關鍵字
def outer(): num = 1 # enclosing 變數 def inner(): nonlocal num # 加上 nonlocal 關鍵字 num = 2 print(num) inner() print(num) outer()
執行結果:
2 2
另外我們需要注意的是:
1.只有模組、類、及函式才能引入新作用域;
2.對於一個變數,內部作用域先宣告就會覆蓋外部變數,不宣告直接使用,就會使用外部作用域的變數(這時只能檢視,無法修改);
3.如果內部作用域要修改外部作用域變數的值時, 全域性變數要使用 global 關鍵字,巢狀作用域變數要使用 nonlocal 關鍵字。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/2558/viewspace-2837190/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 在python中什麼是私有變數域Python變數
- Python中find函式是什麼?其作用有哪些?Python函式
- Linux中什麼是inode?有什麼作用?Linux
- python中,"_"和"__"的作用有什麼不同?Python
- 什麼是Python?Python涉及哪些領域?Python
- JQuery中$(document)是什麼意思有什麼作用jQuery
- Linux中gpgcheck是什麼意思?作用是什麼?LinuxGC
- Linux中公有云是什麼?有什麼作用?Linux
- 軟體測試學習中JavaScript中變數和作用域式是什麼?JavaScript變數
- python中的input是什麼Python
- python中的字典是什麼Python
- 什麼是@Component,@Component的作用是什麼
- Linux中uuid是什麼?作用有哪些?LinuxUI
- Python是什麼?哪些領域會用到?Python
- 什麼是zoom?它有什麼作用?OOM
- 【共讀】你不知道的js 上 (1)作用域是什麼?JS
- Linux中opt是什麼意思?其主要作用是什麼?Linux
- Linux中什麼是套接字檔案?有什麼作用?Linux
- Python中的rad是什麼意思?Python
- python中loc是什麼Python
- 專案管理中的資源日曆是什麼?有什麼作用專案管理
- DNS是什麼?DNS在網路通訊中的作用是什麼?DNS
- Linux中Kdump是什麼?其作用有哪些?Linux
- 零信任中sdp是什麼?有何作用?
- Python中eval如何使用?其作用是什麼?Python
- Linux中type命令有什麼作用?語法格式是什麼?Linux
- Linux系統中掛載是什麼意思?作用是什麼?Linux
- Python中以函式為作用域Python函式
- bucket是什麼意思?有什麼作用?
- Java swing是什麼?有什麼作用?Java
- Python中什麼是閉包?閉包的好處是什麼?Python
- 什麼是閉包?閉包的作用是什麼?
- 什麼是CDN?CDN的原理和作用是什麼?
- python-作用域Python
- Python 中的 *args 和 **kwargs 是什麼Python
- Python中的mechanize模組是什麼?Python
- Python中的類和物件是什麼Python物件
- python OpenCV中的閾值是什麼PythonOpenCV