python中的变量的作用_Python中的变量作用域
python中變量作用域包括:
L (Local) 局部作用域,函數內部聲明但沒有使用global的變量
E (Enclosing) 閉包函數外的函數中,def或者lambda的本地作用域
G (Global) 全局作用域,函數中使用global聲明的變量或在模塊層聲明的變量
B (Built-in) 內建作用域,python的內置類和函數等
當在函數中使用未認證的變量名時,將依照L->E->G->B的順序搜索。
Python除了def/class/lambda 外,其他如: if/elif/else/? try/except? for/while并不能改變其作用域。定義在他們之內的變量,外部還是可以訪問。
1.變量在函數內部第一次出現,且在=左邊,則為局部變量,作用在函數內部。
1 num = 100
2 deffunc():3 num = 200 #局部變量
4 print(num)5
6 func() #輸出200
7 print(num) #輸出100
1 num = 100
2 deffunc():3 num = num + 200 #報錯UnboundLocalError: local variable 'num' referenced before assignment,說明num是局部變量,在賦值前就被引用了
4 print(num)5
6 func()
2.變量在函數內部第一次出現是在=右邊,或作為函數參數,且之前已經定義了全局變量,那這里就是對全局變量的引用。
1 num = 100
2 deffunc():3 new = num + 200
4 print(new)5
6 func() #輸出300
7 print(num) #輸出100
1 num = 100
2 deffunc():3 print(num)4
5 func() #輸出100
3.如果需要在函數內部引用并修改全局變量,則需使用global關鍵字。
1 num = 100
2 deffunc():3 globalnum4 num = 'abc'
5 print(num)6
7 func() #輸出abc
8 print(num) #輸出abc
4.nonlocal關鍵字用來在函數或其他作用域中使用外層(非全局)變量
1 #利用閉包返回一個計數器函數,每次調用它返回遞增整數
2 defcreateCounter():3 i =04 defcounter():5 nonlocal i6 i += 1
7 returni8 returncounter9
10
11 #測試:
12 counterA = createCounter() #返回counter()代碼塊及變量i=1
13 print(counterA(), counterA(), counterA(), counterA(), counterA()) #1 2 3 4 5 每次執行counterA()時,就是執行counter()代碼塊,改變i的值
14 counterB = createCounter() #返回counter()代碼塊及變量i=1
15 if [counterB(), counterB(), counterB(), counterB()] == [1, 2, 3, 4]:16 print('測試通過!')17 else:18 print('測試失敗!')
總結
以上是生活随笔為你收集整理的python中的变量的作用_Python中的变量作用域的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 给matlab图加图注,matlab学习
- 下一篇: python 多分类情感词典_基于情感词