内射老阿姨1区2区3区4区_久久精品人人做人人爽电影蜜月_久久国产精品亚洲77777_99精品又大又爽又粗少妇毛片

云計(jì)算開發(fā)學(xué)習(xí)筆記:Python3如何從一個(gè)包中導(dǎo)入*

設(shè)想一下,如果我們使用 from sound.effects import *會(huì)發(fā)生什么?Python 會(huì)進(jìn)入文件系統(tǒng),找到這個(gè)包里面所有的子模塊,一個(gè)一個(gè)的把它們都導(dǎo)入進(jìn)來。

創(chuàng)新互聯(lián)堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:成都做網(wǎng)站、成都網(wǎng)站制作、成都外貿(mào)網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時(shí)代的津南網(wǎng)站設(shè)計(jì)、移動(dòng)媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!

但是很不幸,這個(gè)方法在 Windows平臺(tái)上工作的就不是非常好,因?yàn)閃indows是一個(gè)大小寫不區(qū)分的系統(tǒng)。

在這類平臺(tái)上,沒有人敢擔(dān)保一個(gè)叫做 ECHO.py 的文件導(dǎo)入為模塊 echo 還是 Echo 甚至 ECHO。

(例如,Windows 95就很討厭的把每一個(gè)文件的首字母大寫顯示)而且 DOS 的 8+3 命名規(guī)則對(duì)長(zhǎng)模塊名稱的處理會(huì)把問題搞得更糾結(jié)。

為了解決這個(gè)問題,只能煩勞包作者提供一個(gè)精確的包的索引了。

導(dǎo)入語(yǔ)句遵循如下規(guī)則:如果包定義文件 __init__.py 存在一個(gè)叫做 __all__ 的列表變量,那么在使用 from package import * 的時(shí)候就把這個(gè)列表中的所有名字作為包內(nèi)容導(dǎo)入。

作為包的作者,可別忘了在更新包之后保證 __all__ 也更新了啊。你說我就不這么做,我就不使用導(dǎo)入*這種用法,好吧,沒問題,誰(shuí)讓你是老板呢。這里有一個(gè)例子,在:file:sounds/effects/__init__.py中包含如下代碼:

這表示當(dāng)你使用from sound.effects import *這種用法時(shí),你只會(huì)導(dǎo)入包里面這三個(gè)子模塊。

如果 __all__ 真的沒有定義,那么使用from sound.effects import *這種語(yǔ)法的時(shí)候,就不會(huì)導(dǎo)入包 sound.effects 里的任何子模塊。他只是把包sound.effects和它里面定義的所有內(nèi)容導(dǎo)入進(jìn)來(可能運(yùn)行__init__.py里定義的初始化代碼)。

這會(huì)把 __init__.py 里面定義的所有名字導(dǎo)入進(jìn)來。并且他不會(huì)破壞掉我們?cè)谶@句話之前導(dǎo)入的所有明確指定的模塊。看下這部分代碼:

這個(gè)例子中,在執(zhí)行 from...import 前,包 sound.effects 中的 echo 和 surround 模塊都被導(dǎo)入到當(dāng)前的命名空間中了。(當(dāng)然如果定義了 __all__ 就更沒問題了)

通常我們并不主張使用 * 這種方法來導(dǎo)入模塊,因?yàn)檫@種方法經(jīng)常會(huì)導(dǎo)致代碼的可讀性降低。不過這樣倒的確是可以省去不少敲鍵的功夫,而且一些模塊都設(shè)計(jì)成了只能通過特定的方法導(dǎo)入。

記住,使用 from Package import specific_submodule 這種方法永遠(yuǎn)不會(huì)有錯(cuò)。事實(shí)上,這也是推薦的方法。除非是你要導(dǎo)入的子模塊有可能和其他包的子模塊重名。

如果在結(jié)構(gòu)中包是一個(gè)子包(比如這個(gè)例子中對(duì)于包sound來說),而你又想導(dǎo)入兄弟包(同級(jí)別的包)你就得使用導(dǎo)入絕對(duì)的路徑來導(dǎo)入。比如,如果模塊sound.filters.vocoder 要使用包 sound.effects 中的模塊 echo,你就要寫成 from sound.effects import echo。

無論是隱式的還是顯式的相對(duì)導(dǎo)入都是從當(dāng)前模塊開始的。主模塊的名字永遠(yuǎn)是__main__,一個(gè)Python應(yīng)用程序的主模塊,應(yīng)當(dāng)總是使用絕對(duì)路徑引用。

包還提供一個(gè)額外的屬性__path__。這是一個(gè)目錄列表,里面每一個(gè)包含的目錄都有為這個(gè)包服務(wù)的__init__.py,你得在其他__init__.py被執(zhí)行前定義哦??梢孕薷倪@個(gè)變量,用來影響包含在包里面的模塊和子包。

這個(gè)功能并不常用,一般用來擴(kuò)展包里面的模塊。

分享文章:云計(jì)算開發(fā)學(xué)習(xí)筆記:Python3如何從一個(gè)包中導(dǎo)入*
本文網(wǎng)址:http://www.rwnh.cn/article22/cgpsjc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供小程序開發(fā)、軟件開發(fā)、外貿(mào)網(wǎng)站建設(shè)、網(wǎng)頁(yè)設(shè)計(jì)公司響應(yīng)式網(wǎng)站、網(wǎng)站內(nèi)鏈

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站建設(shè)網(wǎng)站維護(hù)公司
山东省| 甘孜县| 郓城县| 政和县| 蒙阴县| 沁源县| 揭东县| 玛纳斯县| 资阳市| 孝义市| 南华县| 德惠市| 泰和县| 酉阳| 炎陵县| 沁阳市| 呼玛县| 左贡县| 鄂托克前旗| 曲沃县| 康平县| 康定县| 南昌县| 泌阳县| 桐梓县| 遂平县| 电白县| 始兴县| 林西县| 长治市| 阜康市| 玛多县| 河间市| 德钦县| 慈溪市| 东山县| 乃东县| 金塔县| 全椒县| 万州区| 盐源县|