chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

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

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

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

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

python爬蟲(chóng)知識(shí)分享 ? 來(lái)源:python爬蟲(chóng)知識(shí)分享 ? 作者:python爬蟲(chóng)知識(shí)分享 ? 2022-03-11 15:46 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

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

1. 常規(guī)包

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

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

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

在該目錄下進(jìn)入 Python Console 模式,然后就可以正常導(dǎo)入了

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

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

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

再導(dǎo)入就會(huì)報(bào)錯(cuò)。

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

2. 命名空間包

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

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

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

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

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

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

>>> demo

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

3. 空間命名包的好處

利用命名空間包這個(gè)技術(shù),可以用來(lái)導(dǎo)入目錄分散的代碼。

比如有如下的目錄樹(shù)

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

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

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

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

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

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

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

>>> demo

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

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

    關(guān)注

    1

    文章

    119

    瀏覽量

    22420
  • 空間
    +關(guān)注

    關(guān)注

    2

    文章

    50

    瀏覽量

    14102
  • python
    +關(guān)注

    關(guān)注

    58

    文章

    4884

    瀏覽量

    90298
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    Maxim產(chǎn)品命名規(guī)則詳解

    Maxim產(chǎn)品命名規(guī)則詳解 在電子工程領(lǐng)域,了解產(chǎn)品的命名規(guī)則對(duì)于正確選擇和使用電子元件至關(guān)重要。Maxim作為一家知名的半導(dǎo)體公司,其產(chǎn)品命名有一套獨(dú)特的規(guī)則。今天,我們就來(lái)詳細(xì)探討
    的頭像 發(fā)表于 04-03 16:50 ?627次閱讀

    [VirtualLab] 使用Python運(yùn)行VirtualLab Fusion光學(xué)仿真

    : https://code.visualstudio.com/docs/python/python-tutorial 請(qǐng)注意,這里我們將演示如何在全局環(huán)境中安裝所需的軟件。對(duì)于使用多個(gè)Py
    發(fā)表于 03-31 09:39

    如何在 VisionFive 上使用 Python ?

    來(lái)安裝 愿景五.gpio 軟件: sudo pip install 愿景五.gpio或者,您可以執(zhí)行以下命令: sudo pip3 install 愿景五.gpio (可選)如果將源代碼復(fù)制到
    發(fā)表于 03-30 08:28

    初識(shí)ros2 功能建立與可執(zhí)行文件的配置

    本文介紹了ROS2程序的兩種啟動(dòng)方式:直接運(yùn)行可執(zhí)行文件(ros2 run)和使用啟動(dòng)文件(ros2 launch)。重點(diǎn)講解了Python軟件的結(jié)構(gòu),包括package.xml、setup.py
    的頭像 發(fā)表于 01-22 13:41 ?437次閱讀

    如何使用wireshark進(jìn)行遠(yuǎn)程抓

    一、概述 通常我們使用wireshark進(jìn)行抓分析的時(shí)候,在遠(yuǎn)端設(shè)備抓取一部分?jǐn)?shù)據(jù)后,再回傳到本地,然后使用wireshark進(jìn)行分析。這種操作主要是抓取的數(shù)據(jù)不是實(shí)時(shí)的,不能做實(shí)時(shí)
    的頭像 發(fā)表于 01-16 16:05 ?1171次閱讀
    如何使用wireshark進(jìn)行遠(yuǎn)程抓<b class='flag-5'>包</b>

    別錯(cuò)過(guò)!Altair 電池仿真解決方案,干貨滿滿!

    電池相關(guān)問(wèn)題1.建模2.電池/箱/模塊強(qiáng)度分析密度大,重量質(zhì)分布集中3.振動(dòng)與沖擊噪聲與舒適性要求沖擊速度高4.熱管理發(fā)熱量大,結(jié)構(gòu)復(fù)雜工作溫度控制要求高5.碰撞安全電池擠壓變形過(guò)大引起漏
    的頭像 發(fā)表于 11-20 14:19 ?2595次閱讀
    別錯(cuò)過(guò)!Altair 電池<b class='flag-5'>包</b>仿真解決方案,干貨滿滿!

    Pico Technology發(fā)布Python軟件pyPicoSDK

    近日,全球領(lǐng)先的基于 PC 的儀器供應(yīng)商Pico Technology 官方發(fā)布了 pyPicoSDK,這是一款旨在簡(jiǎn)化 PicoScopes 應(yīng)用的 Python 軟件。pyPicoSDK 在
    的頭像 發(fā)表于 09-29 15:03 ?1090次閱讀

    ENV添加micropython軟件出現(xiàn)異常的原因?

    python27.dll和platformenv_releasedenvtoolsPython27換一下。結(jié)果還是錯(cuò)誤?。 沒(méi)辦法了,就行下一步添加micropython軟件。按照教程走出現(xiàn)了這個(gè)東西我直接
    發(fā)表于 09-12 08:06

    快斷式覆成型保險(xiǎn)絲 skyworksinc

    電子發(fā)燒友網(wǎng)為你提供()快斷式覆成型保險(xiǎn)絲相關(guān)產(chǎn)品參數(shù)、數(shù)據(jù)手冊(cè),更有快斷式覆成型保險(xiǎn)絲的引腳圖、接線圖、封裝手冊(cè)、中文資料、英文資料,快斷式覆成型保險(xiǎn)絲真值表,快斷式覆成型保
    發(fā)表于 07-24 18:34
    快斷式<b class='flag-5'>包</b>覆成型保險(xiǎn)絲 skyworksinc

    鴻蒙5開(kāi)發(fā)寶藏案例分享---優(yōu)化應(yīng)用體積大小問(wèn)題

    少被討論。趕緊來(lái)跟大家分享一波,附代碼詳解和實(shí)操建議,讓你的應(yīng)用秒瘦身~? ?1. SO庫(kù)壓縮:立竿見(jiàn)影的瘦身術(shù) 問(wèn)題 :SO庫(kù)(尤其是C++庫(kù))占用空間大,默認(rèn)打包不壓縮。優(yōu)化 **:在 **&
    發(fā)表于 06-13 10:09

    自動(dòng)膠機(jī)遠(yuǎn)程監(jiān)控物聯(lián)網(wǎng)解決方案

    在現(xiàn)代制造業(yè)中,自動(dòng)膠機(jī)廣泛應(yīng)用于電子、汽車(chē)、電池等眾多行業(yè),承擔(dān)著產(chǎn)品膠、封裝等關(guān)鍵工序。隨著企業(yè)生產(chǎn)規(guī)模的擴(kuò)大和智能化轉(zhuǎn)型的需求,對(duì)自動(dòng)膠機(jī)的高效管理和實(shí)時(shí)監(jiān)控變得愈發(fā)重要。傳統(tǒng)的現(xiàn)場(chǎng)操作
    的頭像 發(fā)表于 06-07 14:02 ?982次閱讀

    藍(lán)牙數(shù)據(jù)通道空口(數(shù)據(jù)

    ? 與藍(lán)牙廣播相對(duì)應(yīng),藍(lán)牙數(shù)據(jù)是另一種Bluetooth LE packet。藍(lán)牙數(shù)據(jù)是藍(lán)牙數(shù)據(jù)信道空中的簡(jiǎn)稱,表示空中只在藍(lán)牙數(shù)
    發(fā)表于 06-03 10:51

    藍(lán)牙廣播

    ?藍(lán)牙廣播,全名藍(lán)牙廣播通道(channel)空中,即在藍(lán)牙廣播通道上傳輸?shù)目罩?b class='flag-5'>包,為兩種空中的一種,其具體格式如下所示: ? 編輯 Advertising Header即前述的
    發(fā)表于 06-03 10:47

    Bluetooth LE Link Layer數(shù)據(jù)全解析

    ,因此文章取名“詳解Bluetooth LE空口格式—兼Bluetooth LE link layer協(xié)議解析”
    發(fā)表于 06-03 10:28

    Cadence SPB OrCAD Allegro22.1安裝

    Windows 8操作系統(tǒng),最低需要Windows 10 64位操作系統(tǒng),如果是Windows Server版需要Windows Server 2012 R2起步。安裝后將占用接近20GB的硬盤(pán)空間。?版權(quán)所有此安裝所安裝的 Cadence 相關(guān)軟件版權(quán)歸屬于 Cad
    發(fā)表于 05-22 16:50 ?10次下載