python中的作用域介紹以及變數修改的程式解釋

2021-09-25 05:26:48 字數 1081 閱讀 7418

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的物件,這樣不管是否使用,都已經...