Python變量作用域范圍

關(guān)鍵詞: python;作用域; Variable Scope;

1、Python中能夠改變變量作用域的代碼段是def、class、lamda三類。
代碼塊:if/elif/else、try/except/finally、for/while 等不更改變量的作用域,在其作用范圍之外,仍然能夠訪問到變量。
2、Python變量搜索順序是局部變量---上層變量---全局變量。

變量作用域

代碼示例:

def scopetest():
    localvar=6;
    print(localvar)  
scopetest()
#print(localvar) #去除注釋這里會(huì)報(bào)錯(cuò),因?yàn)閘ocalvar是本地變量
while True:  
    newvar=8  
    print(newvar)  
    break;    
print(newvar)    
try:  
    newlocal=7  
    raise Exception  
except:  
    print(newlocal) #代碼塊外可以訪問
Out:
6
8
8
7
number = 5
def func0():
    #It's OK to reference.
    print number

def func1():
    #new local variable.
    number = 10
    print number

def func2():
    #global declaration.
    global number
    print number
    number = 10
    print number

print "Before calling any function, number is {}".format(number)
print "Calling func0()----------"
func0()
print "Calling func1()----------"
func1()
print "After calling func1(), number is {}".format(number)
print "Calling func2()----------"
func2()
print "After calling func2(), number is {}".format(number)
Out:
Before calling any function, number is 5
Calling func0()----------
5
Calling func1()----------
10
After calling func1(), number is 5
Calling func2()----------
5
10
After calling func2(), number is 10
變量搜索順序:
def scopetest():  
    var=6;  
    print(var)
    def innerFunc():  
        print(var)  #look here  
    innerFunc()        
var=5   
print(var)  
scopetest()  
print(var)  
Out: 
5
6
6
5

根據(jù)調(diào)用順序反向搜索,先本地變量再全局變量,例如搜先在innerFunc中搜索本地變量,沒有,向上一級(jí)scopetest,發(fā)現(xiàn)本地變量var=6,輸出。

參考:
Python Variable Scope
Python 變量作用域

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容