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

Python函數(shù)編程——名稱空間

系統(tǒng) 1895 0

Python函數(shù)編程——名稱空間

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

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

名稱空間有4種: LEGB

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

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

作用域即范圍

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

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

作用域查找順序

當(dāng)程序引用某個變量的名字時,就會從當(dāng)前名字空間開始搜索。搜索順序規(guī)則便是: 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
          
        

更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

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

【本文對您有幫助就好】

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

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 剑河县| 大荔县| 平安县| 周宁县| 巴里| 资溪县| 滦平县| 雅江县| 航空| 明水县| 鲁山县| 沙河市| 五华县| 泗水县| 尉犁县| 沙洋县| 云安县| 平果县| 古蔺县| 维西| 桑植县| 巴马| 明光市| 高雄县| 荣昌县| 乌什县| 迁安市| 竹溪县| 辽宁省| 怀柔区| 邻水| 桂东县| 济南市| 海口市| 许昌县| 芜湖市| 白河县| 满洲里市| 宽城| 尼勒克县| 嵊州市|