日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

28-高级特性之作用域(2)

發布時間:2024/8/26 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 28-高级特性之作用域(2) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1. 原理

L:local,局部作用域,即函數中定義的變量;
E:enclosing,嵌套的父級函數的局部作用域,即包含此函數的上級函數的局部作用域,但不是全局的;
G:global,全局變量,就是模塊級別定義的變量;
B:built-in,系統固定模塊里面的變量,比如int, bytearray等。
搜索變量的優先級順序依次是:局部作用域>外層作用域>當前模塊中的全局>python內置作用域,也就是LEGB。

x = int(10) #python內置作用域B y = 2 #當前模塊中的全局變量G def outfuction():outfx = 2 #外層作用域Edef infunction():infx = 3 #局部作用域L

2. 作用域產生的場景

  • 會引入新的作用域:module,class,def
  • 不會引入新的作用域:if,for,try--except
  • 注意:如果在外部引用局部變量,本質已經變成“在外部定義或者引用了一個新的全局變量”,如:

    x = 123 #全局G
    def test_1():
    x = 345 #局部變量x是L,屏蔽了作為G的x
    print(x) #345

    test_1() #345
    print(x, '\n') #123,這里的x是G

    def test_2():
    y = 456 #局部變量y
    print(y)

    test_2() #456
    y = 'haozhang' #等價于創造了新的全局變量y
    print(y) #haozhang
    test_2() #456

在函數內部卻要訪問全局變量:用global

x = 1 def outfx():global x #global改變了G區變量print(x) #1x = 2 outfx() print(x) #2

內部函數訪問嵌套的父函數的變量:用nonlocal

def outfx():x = 1 def infx():nonlocal x #nonlocal改變了E區變量x = 2print(x) #2infx()print(x) #2 outfx()

3. 參考文獻:

http://blog.csdn.net/ldzhangyx/article/details/49475159

轉載于:https://www.cnblogs.com/LS1314/p/8504512.html

總結

以上是生活随笔為你收集整理的28-高级特性之作用域(2)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。