女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

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

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

3天內不再提示

關于python包導入的三個冷門知識點

python爬蟲知識分享 ? 來源:python爬蟲知識分享 ? 作者:python爬蟲知識分享 ? 2022-03-14 16:33 ? 次閱讀

1. 使用 __all__ 控制可被導入的變量

使用 from module import * 默認情況下會導入 module 里的所有變量,若你只想從模塊中導入其中幾個變量,可以在 module 中使用 __all__ 來控制想要被其他模塊導入的變量。

# profile.py
name='小明'
age=18

__all__=['name']

打開 python console 驗證一下

>>> from profile import *
>>> print(name)
小明
>>> print(age)
Traceback (most recent call last):
  File "", line 1, in 
NameError: name 'age' is not defined

__all__ 僅對于使用from module import * 這種情況適用。

它經常在一個包的 __init__.py 中出現。

2. 命名空間包的神奇之處

命名空間包,一個陌生的名字。

與我們熟悉的常規包不同的是,它沒有 __init__.py 文件。

更為特殊的是,它可以跨空間地將兩個不相鄰的子包,合并成一個虛擬機的包,我們將其稱之為 命名空間包

例如,一個項目的部分代碼布局如下

foo-package/
    spam/
        blah.py

bar-package/
    spam/
        grok.py

在這2個目錄里,都有著共同的命名空間spam。在任何一個目錄里都沒有__init__.py文件。

讓我們看看,如果將foo-package和bar-package都加到python模塊路徑并嘗試導入會發生什么?

>>> import sys
>>> sys.path.extend(['foo-package', 'bar-package'])
>>> import spam.blah
>>> import spam.grok

當一個包為命名空間包時,他就不再和常規包一樣具有 __file_ 屬性,取而代之的是 __path__

>>> import sys
>>> sys.path.extend(['foo-package', 'bar-package'])
>>> import spam.blah
>>> import spam.grok
>>> spam.__path__
_NamespacePath(['foo-package/spam', 'bar-package/spam'])
>>> spam.__file__
Traceback (most recent call last):
    File "", line 1, in 
AttributeError: 'module' object has no attribute '__file__'

3. 模塊重載中的一個坑

由于有 sys.modules 的存在,當你導入一個已導入的模塊時,實際上是沒有效果的。

為了達到模塊的重載,有的人會將已導入的包從 sys.modules 中移除后再導入

就像下面這樣子

>>> import foo.bar
successful to be imported
>>>
>>> import foo.bar
>>>
>>> import sys
>>> sys.modules['foo.bar']

>>> del sys.modules['foo.bar']
>>>
>>> import foo.bar
successful to be imported

上面的例子里我使用的是import foo.bar ,如果你使用的是 from foo import bar 這種導入形式,會發現重載是同樣是無效的。

這應該算是一個小坑,不知道的人,會掉入坑中爬不出來。

>>> import foo.bar
successful to be imported
>>>
>>> import foo.bar
>>>
>>> import sys
>>> del sys.modules['foo.bar']
>>> from foo import bar

因此,在生產環境中可能需要避免重新加載模塊。而在調試模式中,它會提供一定的便利,但你要知道這個重載的弊端,以免掉入坑里。
審核編輯:湯梓紅

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 控制
    +關注

    關注

    5

    文章

    1021

    瀏覽量

    123539
  • 變量
    +關注

    關注

    0

    文章

    614

    瀏覽量

    28821
  • python
    +關注

    關注

    56

    文章

    4825

    瀏覽量

    86169
收藏 人收藏

    評論

    相關推薦
    熱點推薦

    C51單片機及C語言知識點必備秘籍

    單片機關鍵知識點一覽: 系列一 1:單片機簡敘 2:單片機引腳介紹 3:單片機存儲器結構 4:第一單片機小程序 5:單片機延時程序分析 6:單片機并行口結構 7:單片機的特殊
    發表于 05-15 14:00

    電機選型計算公式與知識點匯總

    純分享帖,需要者可點擊附件獲取完整資料~~~*附件:電機選型計算公式與知識點匯總.pdf 【免責聲明】內容轉自今日電機,因轉載眾多,無法確認真正原始作者,故僅標明轉載來源。版權歸原出處所有,純分享帖,侵權請聯系刪除內容以保證您的權益。
    發表于 04-29 16:10

    電氣工程師必知必會的100電?知識點分享

    電??程師也都是從電?學徒??步?步積累成長起來的。積跬步?千?,匯細流成江海!朋友們,現在讓我們??捷徑,花半個?時的時間來積累100必知必會的電?知識點吧!
    的頭像 發表于 03-14 11:05 ?647次閱讀

    使用Python3.7導入cv2時遇到錯誤怎么解決?

    使用 Python* 版本 3.7。 Ran Classification Python* 演示。 在導入 cv2 時遇到錯誤: ImportError: DLL load failed: The specified modu
    發表于 03-05 09:37

    Linux系統中最重要的三個命令

    Linux劍客是Linux系統中最重要的三個命令,它們以其強大的功能和廣泛的應用場景而聞名。這三個工具的組合使用幾乎可以完美應對Shell中的數據分析場景,因此被統稱為Linux
    的頭像 發表于 03-03 10:37 ?352次閱讀

    華邦電子安全閃存關鍵知識點

    黑客攻擊?高溫考驗?駕駛安全?通通沒在怕的!1月15日,華邦電子舉辦了“安全閃存強化車用電子安全性”為主題的線上研討會。為了讓沒能參加這場線上研討會的邦友們也可以清晰 Get 安全閃存關鍵知識點,邦
    的頭像 發表于 02-12 18:15 ?661次閱讀

    如何將python文件導入到ROS系統中

    本文通過使用myCobot機械臂進行QR碼視覺追蹤的實踐案例分析,介紹如何將 python 文件導入到 ROS 系統中。
    的頭像 發表于 02-11 11:08 ?656次閱讀
    如何將<b class='flag-5'>python</b>文件<b class='flag-5'>導入</b>到ROS系統中

    Aigtek功率放大器應用:電感線圈的知識點分享

    電磁驅動是功率放大器的一大基礎應用領域,其中我們最常見的就是用功放來驅動電感線圈,那么關于電感線圈的這10大知識點你都知道嗎?今天Aigtek安泰電子來給大家介紹一下電感線圈的基礎知識
    的頭像 發表于 01-07 15:43 ?474次閱讀
    Aigtek功率放大器應用:電感線圈的<b class='flag-5'>知識點</b>分享

    后悔沒有早點看到:天線設計中的知識點

    Cat.1 bis R13架構,天線架構精簡為單天線架構,去掉了分集接收天線,因此只需要一根天線。 ? 知識點: Cat.1 bis相對于Cat.1的區別是,后者為兩根天線(一根主天線,一根分集天線
    的頭像 發表于 12-24 17:11 ?983次閱讀
    后悔沒有早點看到:天線設計中的<b class='flag-5'>知識點</b>!

    DNS用戶訪問網站原理

    瀏覽器輸入網址后發生了什么 這是一經典的問題,通過回答的細致程度,可以判斷出,小白、新手、中級玩家、高端玩家。 關于這個問題,小到三兩句話,大到你用三個月都說不完的知識點
    的頭像 發表于 12-17 15:28 ?531次閱讀
    DNS用戶訪問網站原理

    接口測試理論、疑問收錄與擴展相關知識點

    本文章使用王者榮耀游戲接口、企業微信接口的展示結合理論知識,講解什么是接口測試、接口測試理論、疑問收錄與擴展相關知識點知識學院,快來一起看看吧~
    的頭像 發表于 11-15 09:12 ?645次閱讀
    接口測試理論、疑問收錄與擴展相關<b class='flag-5'>知識點</b>

    基本理想電路元件的三個特征是什么

    基本理想電路元件是構成電路的基本單元,它們具有三個基本特征:電壓-電流關系、能量轉換和電路參數。以下是對這三個特征的分析: 電壓-電流關系 理想電路元件的電壓-電流關系是其最基本的特征之一。這種關系
    的頭像 發表于 08-25 09:38 ?2177次閱讀

    怎么判斷電容三點式和電感三點

    在電子電路中,電容三點式和電感三點式振蕩電路是兩種常見的振蕩電路類型,它們的主要區別在于反饋元件(電容或電感)與晶體管三個極(基極、發射極、集電極)的連接方式。 一、基本概念 1. 電容三點
    的頭像 發表于 08-21 15:57 ?3350次閱讀

    可調變阻器三個引腳怎么區分

    可調變阻器,也稱為電位器或可變電阻器,是一種可以調節電阻值的電子元件。它廣泛應用于各種電子設備中,如音頻設備、電源管理、電機控制等。可調變阻器有三個引腳,分別是固定端、滑動端和可調端。這三個引腳
    的頭像 發表于 07-24 11:12 ?2267次閱讀

    時間繼電器應用的三個關鍵是什么?

    時間繼電器應用的三個關鍵:選型、安裝和調試。 一、時間繼電器的選型 確定時間繼電器的類型 時間繼電器按照工作原理可以分為電磁式、電子式和干簧式等幾種類型。電磁式時間繼電器具有結構簡單、價格低廉、可靠性高等特點,
    的頭像 發表于 06-21 10:00 ?1291次閱讀