哈哈哈哈哈操欧洲电影,久草网在线,亚洲久久熟女熟妇视频,麻豆精品色,久久福利在线视频,日韩中文字幕的,淫乱毛视频一区,亚洲成人一二三,中文人妻日韩精品电影

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

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

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

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

python爬蟲知識分享 ? 來源:python爬蟲知識分享 ? 作者:python爬蟲知識分享 ? 2022-03-11 15:46 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

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

1. 常規(guī)包

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

舉個(gè)例子,現(xiàn)在有如下的目錄樹,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)入就會報(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è)文件夾中沒有定義 __init__.py,也是可以被導(dǎo)入的,只不過它不是以 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ù),可以用來導(dǎo)入目錄分散的代碼。

比如有如下的目錄樹

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

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

一個(gè)包是否被作為一個(gè)包命名空間的主要方法是檢查其 __file__ 屬性。如果沒有,那包是個(gè)命名空間。這也可以由其字符表現(xiàn)形式中的 namespace 這個(gè)詞體現(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)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 結(jié)構(gòu)
    +關(guān)注

    關(guān)注

    1

    文章

    119

    瀏覽量

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

    關(guān)注

    2

    文章

    50

    瀏覽量

    14097
  • python
    +關(guān)注

    關(guān)注

    58

    文章

    4882

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

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

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

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

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

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

    如何在 VisionFive 上使用 Python ?

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

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

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

    如何使用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 ?1155次閱讀
    如何使用wireshark進(jìn)行遠(yuǎn)程抓<b class='flag-5'>包</b>

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

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

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

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

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

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

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

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

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

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

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

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

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

    ? 與藍(lán)牙廣播相對應(yīng),藍(lán)牙數(shù)據(jù)是另一種Bluetooth LE packet。藍(lán)牙數(shù)據(jù)是藍(lán)牙數(shù)據(jù)信道空中的簡稱,表示空中只在藍(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的硬盤空間。?版權(quán)所有此安裝所安裝的 Cadence 相關(guān)軟件版權(quán)歸屬于 Cad
    發(fā)表于 05-22 16:50 ?10次下載
    汾阳市| 深泽县| 巴塘县| 南部县| 永昌县| 睢宁县| 镇康县| 柳江县| 大田县| 临漳县| 谢通门县| 穆棱市| 咸阳市| 泾源县| 沾化县| 沂源县| 霍山县| 周至县| 库伦旗| 临潭县| 汉寿县| 子洲县| 互助| 龙南县| 怀远县| 陇西县| 抚州市| 磐安县| 平邑县| 阿城市| 信丰县| 钟山县| 镇沅| 福州市| 兴文县| 洛南县| 盘山县| 伊川县| 灵宝市| 宜良县| 玉溪市|