最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

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

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

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

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

從python2.5,你可以打開 import的行為直接去絕對導(dǎo)入使用一個(gè) from __future__ import absolute_import 。這個(gè)絕對導(dǎo)入行為將成為一個(gè)默認(rèn)的細(xì)節(jié)在將來的python中。一旦絕對導(dǎo)入被默認(rèn),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是連著的,中間沒有空格

.代表當(dāng)前目錄,..代表上一層目錄,...代表上上層目錄。

示例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)文章

最新評論

南京市| 邵东县| 大方县| 南乐县| 伊宁市| 南丰县| 古浪县| 错那县| 灯塔市| 阿尔山市| 大洼县| 伊春市| 集安市| 江门市| 皋兰县| 荣成市| 胶州市| 盖州市| 都江堰市| 清徐县| 军事| 互助| 定西市| 东明县| 元氏县| 阳春市| 龙泉市| 江孜县| 阿拉善右旗| 广宁县| 鄂托克旗| 敦化市| 龙口市| 桐梓县| 亚东县| 广河县| 邳州市| 大庆市| 融水| 黎川县| 沈阳市|