欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

詳解Python中的from..import絕對導(dǎo)入語句

 更新時間:2016年06月21日 18:42:28   作者:樂天  
絕對導(dǎo)入其實非常簡單,即是用from語句在import前指明頂層package名,下面我們通過兩個例子來詳解Python中的from..import絕對導(dǎo)入語句

相對或者絕對import
更多的復(fù)雜部分已經(jīng)從python2.5以來實現(xiàn):導(dǎo)入一個模塊可以指定使用絕對或者包相對的導(dǎo)入。這個計劃將移動到使絕對的導(dǎo)入成為默認的細節(jié)在其他版本的python中。
我們假設(shè)你有一個包目錄,像下面這樣:

pkg/
pkg/__init__.py
pkg/main.py
pkg/string.py

上面定義了一個包稱為 pkg 包含 pkg.main 和pkg.string 兩個子模塊??紤]在‘main.py'中的代碼,什么事情會發(fā)生如果我們執(zhí)行語句 import string 在python2.4或者更早的版本?他將會查詢包的目錄執(zhí)行一個相對的import,找到pkg/string.py ,導(dǎo)入文件的內(nèi)容作為pkg.string模塊,這個模塊的邊界的名字是'string'在pkg.main模塊中的名稱空間。
如果pkg.string是你想要的這個非常不錯。但是如果你僅僅想要的是python的基本的string模塊?
沒有清楚的方法忽略pkg.string以及尋找基本的模塊;一般情況下你不得不去查看sys.modules中的內(nèi)容,那有一點稍微的不清楚。Holger Krekel的py.std包提供了一個整齊的方法執(zhí)行從基本庫中導(dǎo)入的方法,improt py;py.std.string.jion(),但是那個包在python的安裝過程是是不可用的。

閱讀代碼在相對導(dǎo)入方面也是不夠清晰的,因為讀者可能混淆string和pkg.string模塊使用。Python用戶可以馬上知道那是不同的名稱在基本庫和自己的包模塊之間,但是你不能保護你自己的子模塊名字在一個新版本的python中。

從python2.5,你可以打開 import的行為直接去絕對導(dǎo)入使用一個 from __future__ import absolute_import 。這個絕對導(dǎo)入行為將成為一個默認的細節(jié)在將來的python中。一旦絕對導(dǎo)入被默認,import string 將總是尋找基本庫。建議用戶盡可能多的使用絕對導(dǎo)入,因此在你的代碼中使用from pkg improt string是適宜的。在python2.*版本中需要:

from __future__ import absolute_import

示例1:
例如:在模塊A.B.C中的代碼:

from . import D     # 導(dǎo)入A.B.D
from .. import E    # 導(dǎo)入A.E
from ..F import G    # 導(dǎo)入A.F.G,.. 和 F是連著的,中間沒有空格

.代表當前目錄,..代表上一層目錄,...代表上上層目錄。

示例2:

目錄結(jié)構(gòu):

package/
 __init__.py
 subpackage1/
  __init__.py
  moduleX.py
  moduleY.py
 subpackage2/
  __init__.py
  moduleZ.py
 moduleA.py

在subpackage1/moduleX.py 或者 subpackage1/__init__.py中可以這樣導(dǎo)入module:

from .moduleY import spam
from .moduleY import spam as ham
from . import moduleY
from ..subpackage1 import moduleY
from ..subpackage2.moduleZ import eggs
from ..moduleA import foo
from ...package import bar
from ...sys import path

注意,from ...sys import path是合法的,但是不建議。直接from sys import path就行了。

相關(guān)文章

  • python drf各類組件的用法和作用

    python drf各類組件的用法和作用

    這篇文章主要介紹了python drf各類組件的用法和作用,幫助大家更好的理解和學(xué)習(xí)python,感興趣的朋友可以了解下
    2021-01-01
  • 詳解Django框架中的視圖級緩存

    詳解Django框架中的視圖級緩存

    這篇文章主要介紹了詳解Django框架中的視圖級緩存,Django是最具人氣的Python web開發(fā)框架,需要的朋友可以參考下
    2015-07-07
  • Python入門之模塊與包

    Python入門之模塊與包

    這篇文章主要為大家介紹了Python的模塊與包,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2021-12-12
  • Python提取PDF內(nèi)容的方法(文本、圖像、線條等)

    Python提取PDF內(nèi)容的方法(文本、圖像、線條等)

    這篇文章主要介紹了Python提取PDF內(nèi)容的方法(文本、圖像、線條等),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • pandas進行數(shù)據(jù)的交集與并集方式的數(shù)據(jù)合并方法

    pandas進行數(shù)據(jù)的交集與并集方式的數(shù)據(jù)合并方法

    今天小編就為大家分享一篇pandas進行數(shù)據(jù)的交集與并集方式的數(shù)據(jù)合并方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-06-06
  • 詳解sklearn?Preprocessing?數(shù)據(jù)預(yù)處理功能

    詳解sklearn?Preprocessing?數(shù)據(jù)預(yù)處理功能

    這篇文章主要介紹了sklearn?Preprocessing?數(shù)據(jù)預(yù)處理功能,本文通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-08-08
  • Python 調(diào)用C++封裝的進一步探索交流

    Python 調(diào)用C++封裝的進一步探索交流

    這篇文章主要介紹了Python 調(diào)用C++封裝的進一步探索交流,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-03-03
  • Python學(xué)習(xí)筆記之視頻人臉檢測識別實例教程

    Python學(xué)習(xí)筆記之視頻人臉檢測識別實例教程

    這篇文章主要給大家介紹了關(guān)于Python學(xué)習(xí)筆記之視頻人臉檢測識別的相關(guān)資料,文中通過示例代碼以及圖文介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • 用Python實現(xiàn)QQ游戲大家來找茬輔助工具

    用Python實現(xiàn)QQ游戲大家來找茬輔助工具

    這是一個用于QQ大家來找茬(美女找茬)的輔助外掛,開發(fā)的原因是看到老爸天天在玩這個游戲,分數(shù)是慘不忍睹的負4000多。本來是想寫個很簡單的東西,但由于過程中老爸的多次嘲諷,逼得我不得不盡力完善,最后形成了一個小小的產(chǎn)品。
    2014-09-09
  • Python subprocess庫的使用詳解

    Python subprocess庫的使用詳解

    這篇文章主要介紹了Python subprocess庫的使用詳解,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-10-10

最新評論