python中作用域有4種情況:
l:local,區域性作用域,即函式中定義的變數;e:enclosing,巢狀的父級函式的區域性作用域,即包含次函式的上級函式的區域性作用域,但不是全域性的;g:global,全域性變數,就是模組級別定義的變數;b:builtin,系統固定模組裡面的變數,比如int.搜尋變數的優先順序順序是:區域性作用域》外層作用域》當前模組中全域性》python內建作用域,也就是legb.
total=0#定義全域性變數
def sum(arg1,arg2):
total=arg1+arg2#這裡的total是區域性變數
print('函式內是區域性變數: ',total)
return total
sum(10,20)
print('函式外是全域性變數: ',total)
num=1
def fun():
global num#加入global後,在函式內部是可以改變外面的全域性變數
num=123
print('在函式中的num: ',num) #這裡輸出內部的num=123
fun()
print('全域性變數num ',num)
#如果要修改巢狀作用域(enclosing作用域,外層非全域性作用域)中的變數,則需要弄nolocal關鍵字了
def outer():
count=1
def inner():
count=12
inner()
print(count)
outer()#輸出結果為1.
def outer():
count=1
def inner():
nonlocal count #使用nonlocal關鍵字可以在乙個巢狀的函式中修改巢狀作用域中的變數.
count=12
inner()
print(count)
outer()#輸出結果為12.
上面是程式的執行結果,可以理解變數的變化.
作用域以及作用域鏈
scope 指的就是我們所說的作用域 其中儲存了 執行期上下文 的集合 執行期上下文就是所說的ao 作用域鏈 scope 中所儲存的執行期上下文物件的集合 這個集合呈鏈式 鏈結 我們把這種鏈式鏈結叫做作用域鏈。執行期上下文 當函式執行時 會建立乙個稱為 執行期上下文 ao 的內部物件。乙個執行期上下...
python中的作用域
python中的作用域分4種情況 x int 2.9 int built in g count 0 global def outer o count 1 enclosing def inner i count 2 local print o count print i count 找不到 inner...
Spring中Bean的作用域介紹
在spring中,組成應用程式的主體 由springioc容器所管理的物件,被稱之為bean。簡單來講,也就是由ioc容器進行初始化 裝配 管理 生命週期和依賴關係 的物件。spring預設作用域,singleton是單例型別,預設在建立容器時就自動建立了乙個bean的物件,這樣不管是否使用,都已經...