python-作用域解析


局部作用域和全局作用域:局部作用域不能修改全局作用域的變量

count = 10
def outer():
    #global count 局部變量改成全局變量,global聲明一下即可。就可以修改了。
    print(count) #全局變量可以在局部調用但是不可以修改。
    count+=1 #報錯,
    count = 1 #這里並不是修改了全局變量count,而是重新定義了一個新的局部變量count
    print(count)

outer()

外層作用域:nonlocal

def outer():
    count=10
    def inner():
        nonlocal count #跟global作用一樣,在這一層用
        count=20
    inner()
    print(count)
outer()        

小結:

1.變量查找順序:LEGB

局部作用域>外層作用域>當前模塊中全局>python內置作用域;

2.只有模塊/類/函數能引入新作用域;

3.變量:內部作用域先聲明就覆蓋外部變量,不聲明直接用就會使用外部作用域變量;

4.內部域修改外部域變量,全局變量用global,嵌套域變量用nonlocal。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM