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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python名称空间与运用域_Python名称空间和作用域讲座,命名,Namespaces,Scopes

發布時間:2025/3/11 python 12 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python名称空间与运用域_Python名称空间和作用域讲座,命名,Namespaces,Scopes 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Python命名空間(Namespaces)和作用域(Scopes)講座

命名空間(Namespace)

命名空間(Namespace),是名稱到對象的映射。

命名空間提供了在項目中避免名字沖突的一種方法。命名空間是獨立的,沒有任何關系的,所以一個命名空間中不能有重名,但不同的命名空間是可以重名而沒有任何影響——

不同命名空間中的名稱之間絕對沒有關系,請牢記這一點

多個名稱(在多個作用域內)可以綁定到同一個對象。這在其他語言中稱為別名。在處理不可變的基本類型(數字,字符串,元組)時可以安全地忽略它。但是,對于可變對象,如列表,字典和大多數其他類型在某些方面表現得像指針,如果函數修改了作為參數傳遞的對象,調用者將看到更改。

幾個命名空間的例子:存放內置函數的集合(包含 abs() 這樣的函數名,和內建的異常名稱 BaseException、Exception 等等);模塊中的全局名稱;函數中的局部名稱,包括函數的參數和函數中的變量。 從某種意義上說,對象的屬性集合也是一種命名空間的形式。

命名空間查找順序

當一行代碼要使用變量 x 的值時,Python 會到所有可用的名字空間去查找變量,按照如下順序:

1、局部命名空間:特指當前函數或類的方法。如果函數定義了一個局部變量 x,或一個參數 x,Python 將使用它,然后停止搜索。

2、全局命名空間:特指當前的模塊。如果模塊定義了一個名為 x 的變量,函數或類,Python 將使用它然后停止搜索。

3、內置命名空間:對每個模塊都是全局的。作為最后的嘗試,Python 將假設 x 是內置函數或變量。

4、如果 Python 在這些名字空間找不到 x,它將放棄查找并引發一個 NameError 異常,如,NameError: name 'aa' is not defined。

嵌套函數的情況:

1、先在當前 (嵌套的或 lambda) 函數的命名空間中搜索

2、然后是在父函數的命名空間中搜索

3、接著是模塊命名空間中搜索

4、最后在內置命名空間中搜索

命名空間的生命周期

不同的命名空間在不同的時刻創建,有不同的生存期。

1、內置命名空間在 Python 解釋器啟動時創建,會一直保留,不被刪除。

2、模塊的全局命名空間在模塊定義被讀入時創建,通常模塊命名空間也會一直保存到解釋器退出。

3、當函數被調用時創建一個局部命名空間,當函數返回結果 或 拋出異常時,被刪除。每一個遞歸調用的函數都擁有自己的命名空間。

作用域(Scopes)

變量的作用域決定了在哪一部分程序可以訪問哪個特定的變量名稱。

總結

以上是生活随笔為你收集整理的python名称空间与运用域_Python名称空间和作用域讲座,命名,Namespaces,Scopes的全部內容,希望文章能夠幫你解決所遇到的問題。

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