色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內(nèi)不再提示

詳解python常規(guī)包與命名空間包

python爬蟲知識分享 ? 來源:python爬蟲知識分享 ? 作者:python爬蟲知識分享 ? 2022-03-11 15:46 ? 次閱讀

python常規(guī)包與命名空間包

1. 常規(guī)包

在 Python 3.3 之前或者說 Python 2 中,一個包想要被導入使用,那么該包內(nèi)必須要有 __init__.py 文件,這個文件是 Python 識別一個文件夾是否是一個 Python 的重要標志。

舉個例子,現(xiàn)在有如下的目錄樹,demo 及子文件夾 foo 和 bar 下都有 __init__.py 文件。

$ tree demo/
demo/
├── bar
│ └── __init__.py
├── foo
│ └── __init__.py
└── __init__.py

在該目錄下進入 Python Console 模式,然后就可以正常導入了

>>> import demo
>>> import demo.bar
>>> import demo.foo

如果此時我把 demo 目錄下的 __init__.py 刪除

$ tree demo/
demo/
├── bar
│ └── __init__.py
└── foo
    └── __init__.py

再導入就會報錯。

>>> import demo
Traceback (most recent call last):
  File "", line 1, in 
ImportError: No module named demo

2. 命名空間包

在 Python 3.3 之后(PEP 420),即使一個文件夾中沒有定義 __init__.py,也是可以被導入的,只不過它不是以 Python 包的形式導入,而是以命名空間包 (Namespace package) 的形式被導入,而這一特性是在 Python 3.3 被引入的。

比如還是上面的目錄結(jié)構(gòu):

$ tree demo/
demo/
├── bar
│ └── __init__.py
└── foo
    └── __init__.py

在 Python 3 下進入 Python Console 模式,發(fā)現(xiàn)導入是正常的

>>> import demo
>>> import demo.foo
>>> import demo.bar

使用 __path__ 查看一下,發(fā)現(xiàn) demo 不再是一個常規(guī)包了,而是一個 namespace package

>>> demo

>>>
>>> demo.__path__
_NamespacePath(['/root/python/demo'])

3. 空間命名包的好處

利用命名空間包這個技術,可以用來導入目錄分散的代碼。

比如有如下的目錄樹

$ tree
.
├── xc-pkg
│ └── demo
│     └── foo
│         └── __init__.py
└── xm-pkg
    └── demo
        └── bar
            └── __init__.py

在這 xc-pkgxm-pkg 這兩個目錄里,都有著共同的命名空間 demo。這時候再導入這兩個包的時候,發(fā)現(xiàn)這兩個包被合并到一起了

>>> import sys
>>> sys.path.extend(['xm-pkg', 'xc-pkg'])
>>>
>>> import demo.foo
>>> import demo.bar
>>> demo

在這里工作的機制被稱為命名空間包的一個特征。從本質(zhì)上講,命名空間包是一種特殊的封裝設計,為合并不同的目錄的代碼到一個共同的命名空間。

命名空間包的關鍵是確保頂級目錄中沒有 __init__.py 文件來作為共同的命名空間。缺失 __init__.py 文件使得在導入包的時候會發(fā)生有趣的事情:這并沒有產(chǎn)生錯誤,解釋器創(chuàng)建了一個由所有包含匹配包名的目錄組成的列表。特殊的包命名空間模塊被創(chuàng)建,只讀的目錄列表副本被存儲在其 __path__ 變量中。

>>> demo.__path__
_NamespacePath(['xm-pkg/demo', 'xc-pkg/demo'])

一個包是否被作為一個包命名空間的主要方法是檢查其 __file__ 屬性。如果沒有,那包是個命名空間。這也可以由其字符表現(xiàn)形式中的 namespace 這個詞體現(xiàn)出來。

>>> demo

>>>
>>> demo.__file__
Traceback (most recent call last):
  File "", line 1, in 
AttributeError: module 'demo' has no attribute '__file__'

審核編輯:湯梓紅
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 結(jié)構(gòu)

    關注

    1

    文章

    117

    瀏覽量

    21613
  • 空間
    +關注

    關注

    2

    文章

    48

    瀏覽量

    13659
  • python
    +關注

    關注

    56

    文章

    4800

    瀏覽量

    84820
收藏 人收藏

    評論

    相關推薦

    華納云如何解讀WinMTR的丟率數(shù)據(jù)?

    WinMTR顯示的丟率數(shù)據(jù)是指在網(wǎng)絡路徑上,從你的計算機到目標主機之間,數(shù)據(jù)丟失的百分比。丟率是網(wǎng)絡穩(wěn)定性的一個重要指標,它可以幫助識別網(wǎng)絡中的問題點,如路由器故障、網(wǎng)絡擁塞或配置錯誤。以下
    的頭像 發(fā)表于 12-30 16:51 ?123次閱讀

    mtu配置步驟詳解 mtu與數(shù)據(jù)丟失的關系

    MTU(Maximum Transmission Unit)即最大傳輸單元,是指一種通信協(xié)議的某一層上面所能通過的最大數(shù)據(jù)報大小,單位是字節(jié)。MTU配置步驟及其與數(shù)據(jù)丟失的關系如下: MTU配置
    的頭像 發(fā)表于 12-16 14:33 ?702次閱讀

    CentOS中使用tcpdump抓

    CentOS中使用tcpdump抓
    的頭像 發(fā)表于 10-28 14:48 ?277次閱讀

    什么是膜壓方線?

    而成,工藝過程中新增加了壓方工序,使得各股線間隙更小,整線密度更高。 相比于常規(guī)線,膜壓方線在相同股數(shù)下線徑可減小50%,可以有效減小磁性元件繞組的體積,為新能源汽車節(jié)省更多空間
    的頭像 發(fā)表于 10-16 11:33 ?237次閱讀
    什么是膜<b class='flag-5'>包</b>壓方線?

    使用Python進行Ping測試

    )請求,然后等待目標主機返回響應,從而測量網(wǎng)絡的延遲和丟情況。隨著Python編程語言的廣泛應用,越來越多的網(wǎng)絡工程師開始使用Python
    的頭像 發(fā)表于 08-12 17:56 ?543次閱讀
    使用<b class='flag-5'>Python</b>進行Ping測試

    安裝依賴的Python軟件時報錯如何解決?

    安裝依賴的 Python 軟件,出現(xiàn)了如下錯誤,請問如何解決,謝謝! Command \"E:/msys32/mingw32/bin/python2.7.exe E:/msys32
    發(fā)表于 06-26 07:32

    什么是小圓柱軟電池?小圓柱軟電池的優(yōu)缺點?

    小圓柱軟電池是一種鋰離子電池,它結(jié)合了小圓柱電池的外形和軟電池的封裝特性。
    的頭像 發(fā)表于 05-07 11:23 ?805次閱讀

    電池和硬電池的區(qū)別有哪些呢?

    電池和硬電池是兩種不同類型的鋰離子電池封裝方式,它們在材料、結(jié)構(gòu)、性能以及應用領域上都存在顯著的區(qū)別。
    的頭像 發(fā)表于 05-07 10:25 ?1w次閱讀

    儲能電池ccs結(jié)構(gòu)介紹 儲能電池的結(jié)構(gòu)原理是什么?

    儲能電池CCS結(jié)構(gòu)介紹 儲能電池(Energy Storage Battery Pack,簡稱ESBP)是一種用于存儲電能的設備,廣泛應用于電動汽車、可再生能源、電網(wǎng)調(diào)節(jié)等領域。儲能電池的結(jié)構(gòu)
    的頭像 發(fā)表于 04-29 14:32 ?2334次閱讀

    什么是軟電池?軟電池就是石墨烯電池嗎?

    電池是一種鋰離子電池,其名稱來源于其獨特的封裝方式。與傳統(tǒng)的圓柱形或方形硬殼電池不同,軟電池使用鋁塑復合膜作為外殼材料,這種軟性包裝材料為電池提供了更大的設計靈活性和一些獨特的性能優(yōu)勢。
    的頭像 發(fā)表于 04-28 17:40 ?1997次閱讀

    鋰電池軟和硬哪個好

    鋰電池作為現(xiàn)代電子設備和電動汽車的主要電源,其封裝形式主要分為軟和硬兩種。
    的頭像 發(fā)表于 04-28 17:22 ?7665次閱讀

    DPDK在AI驅(qū)動的高效數(shù)據(jù)處理應用

    傳統(tǒng)的數(shù)據(jù)處理方式是數(shù)據(jù)先到內(nèi)核最后再到用戶層進行處理。這種方式會增加額外的延遲和CPU開銷,嚴重影響數(shù)據(jù)處理的性能。 DPDK 繞過內(nèi)核,在用戶空間中實現(xiàn)快速數(shù)據(jù)
    的頭像 發(fā)表于 02-25 11:28 ?977次閱讀
    DPDK在AI驅(qū)動的高效數(shù)據(jù)<b class='flag-5'>包</b>處理應用

    CFP5-FL;SMD卷軸SOD128FL-1裝信息

    電子發(fā)燒友網(wǎng)站提供《CFP5-FL;SMD卷軸SOD128FL-1裝信息.pdf》資料免費下載
    發(fā)表于 02-05 09:52 ?0次下載
    CFP5-FL;SMD卷軸<b class='flag-5'>包</b>SOD128FL-1<b class='flag-5'>包</b>裝信息

    HWSON8;SMD卷軸SOT8067-1裝信息

    電子發(fā)燒友網(wǎng)站提供《HWSON8;SMD卷軸SOT8067-1裝信息.pdf》資料免費下載
    發(fā)表于 02-05 09:43 ?0次下載
    HWSON8;SMD卷軸<b class='flag-5'>包</b>SOT8067-1<b class='flag-5'>包</b>裝信息

    DFN2020-6;SMD卷軸SOT1220-3裝信息

    電子發(fā)燒友網(wǎng)站提供《DFN2020-6;SMD卷軸SOT1220-3裝信息.pdf》資料免費下載
    發(fā)表于 02-05 09:29 ?1次下載
    DFN2020-6;SMD卷軸<b class='flag-5'>包</b>SOT1220-3<b class='flag-5'>包</b>裝信息
    主站蜘蛛池模板: 久久99r66热这里只有精品| 7756短视频| 九九在线精品视频| 北岛玲手机在线观看视频观看| 亚洲免费福利在线视频| 妻子撸av中文字幕| 久久精品WWW人人爽人人| 国产精品成人无码久免费| 60老妇性xxxxhd| 亚欧成人毛片一区二区三区四区| 欧美性受xxxx狂喷水| 久久热r在线视频精品| 国产在线伊人| 国产av免费观看日本| avv天堂| 在线国内自拍精品视频| 亚洲AV久久无码高潮喷水| 色老板影视| 欧美一区二区视频在线观看 | 京香在线播放| 国产精品久久久久久AV免费不卡| a视频在线看| 6080伦理久久亚洲精品| 伊人久久综合谁合综合久久| 亚洲成人免费看| 午夜不卡久久精品无码免费| 日本在线免费| 青娱乐极品视觉盛宴av| 欧美free嫩交hd| 免费成年人在线视频| 美女白虎穴| 毛片手机在线看| 久久亚洲A片COM人成A| 九色终合九色综合88| 回复术士勇者免费观看全集| 国产在线播放91| 国精产品一区二区三区有限公司| 国产毛A片久久久久久无码| 国产精品97久久AV麻豆| 国产成人综合网在线观看| 国产 精品 亚洲 欧美 高清|