日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

Python函數編程——名稱空間

系統 1814 0

Python函數編程——名稱空間

名稱空間又名name space,顧名思義就是存放名字的地方,存什么名字呢?舉例說明,若變量x=1,1存放于內存中,那名字x存放在哪里呢? 稱空間正是存放名字x與1綁定關系的地方。

Python里面有很多名字空間,每個地方都有自己的名字空間,互不打擾,不同空間中的兩個相同名字的變量之間沒有任何關系。

名稱空間有4種: LEGB

  • locals :函數內部的名字空間,一般包括函數的局部變量以及形式參數。
  • enclosing function :在嵌套函數中外部函數的名字空間,若fun2嵌套在fun1里,對fun2來說,fun1的名字空間就enclosing。
  • globals :當前的模塊空間,模塊就是一些py文件。也就是說,globals()類似全局變量。
  • builtins :內置模塊空間,也就是內置變量或者內置函數的名字空間。

不同變量的作用域不同就是由這個變量所在的名稱空間所決定的。

作用域即范圍

  • 全局范圍:全局存活,全局有效。
  • 局部范圍:臨時存活,局部有效。

查看作用域方法: globals() locals()

作用域查找順序

當程序引用某個變量的名字時,就會從當前名字空間開始搜索。搜索順序規則便是: LEGB 。即 locals -> enclosing function -> globals ->builtins 。一層一層的查找,找到了之后,便停止搜索,如果最后沒有找到,則拋出NameError的異常。

          
            level = 'L0'
n = 22
def func():
    level = 'L1'
    n = 33
    print(locals())
    def outer():
        n = 44
        level = 'L2'
        print("outer:",locals(),n)
        def inner():
            level = 'L3'
            print("inner:",locals(),n) #此外打印的n是多少?
        inner()
    outer()
func()
          
        

輸出

          
            {'n': 33, 'level': 'L1'}
outer: {'level': 'L2', 'n': 44} 44
inner: {'level': 'L3', 'n': 44} 44
          
        

更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 常山县| 芒康县| 舒兰市| 佛冈县| 株洲市| 苍梧县| 马龙县| 恩平市| 孟村| 嵩明县| 杭锦后旗| 元谋县| 开封县| 土默特左旗| 尚志市| 离岛区| 绵阳市| 云浮市| 花垣县| 余姚市| 山阳县| 婺源县| 革吉县| 盐山县| 海盐县| 黔西县| 中方县| 滨州市| 伽师县| 且末县| 扶风县| 逊克县| 台中市| 聂拉木县| 阿勒泰市| 潞城市| 镇宁| 新田县| 扎赉特旗| 东光县| 商洛市|