這篇文章主要介紹了python中循環(huán)import的用法示例,具有一定借鑒價(jià)值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
成都創(chuàng)新互聯(lián)是專業(yè)的通川網(wǎng)站建設(shè)公司,通川接單;提供成都做網(wǎng)站、成都網(wǎng)站設(shè)計(jì),網(wǎng)頁(yè)設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行通川網(wǎng)站開發(fā)網(wǎng)頁(yè)制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來(lái)合作!import介紹
import語(yǔ)句作用就是用來(lái)導(dǎo)入模塊的,它可以出現(xiàn)在程序中的任何位置。
import語(yǔ)句語(yǔ)法
使用import語(yǔ)句導(dǎo)入模塊,import語(yǔ)句語(yǔ)法如下:
import module
關(guān)鍵字 模塊名
使用方法例如:
import math #入導(dǎo)math模塊
math.floor() #調(diào)用math模塊中的floor()函數(shù)
如果要同時(shí)導(dǎo)入多個(gè)模塊,只需要在模塊名之前用逗號(hào)進(jìn)行分隔:
import module1,module2,module3.......
同時(shí)導(dǎo)入多個(gè)模塊的方法,對(duì)于初學(xué)者來(lái)說(shuō)可讀性和可理解性不如第一種好。所以想要導(dǎo)入多個(gè)模塊時(shí),還是比較推薦用第一種方式,把每一個(gè)模塊都單獨(dú)進(jìn)行一次導(dǎo)入,可能會(huì)感覺操作起來(lái)麻煩一些,但便于理解。
引用
最近項(xiàng)目組用python,慢慢開始學(xué)習(xí)了。第一天就遇到了import問題。
python語(yǔ)言的import有兩種方法,一個(gè)是import 模塊名,一個(gè)是from 模塊名 import 函數(shù)或者類或者變量。
直接import只能import模塊,不能import 模塊里面的內(nèi)容。使用內(nèi)容必須加上模塊名。
在import的時(shí)候,系統(tǒng)會(huì)把所有的加載的模塊載入內(nèi)存,并且放入一個(gè)map中,from A import B的過程是,看是否有A模塊在系統(tǒng)中加載,如果有則直接拿出來(lái),否則新建一個(gè),這時(shí)需要填充A模塊的內(nèi)容,就需要執(zhí)行A模塊的文件。一旦構(gòu)建好了A模塊,那么就可以從A里面取B了,如果沒有就報(bào)錯(cuò)。
上述邏輯是如果用A,A沒有載入,就執(zhí)行A,否則就直接返回A的函數(shù)或者變量。這個(gè)時(shí)候就有一個(gè)問題,當(dāng)前腳本Main第一次執(zhí)行,需要執(zhí)行from A import ,發(fā)現(xiàn)沒有A,就新建一個(gè)A在內(nèi)存中,然后填充A模塊的信息,就會(huì)去執(zhí)行A,此時(shí),A里面要 from Main import D,那么因?yàn)镸ain已被執(zhí)行,就直接從內(nèi)存的map中取得Main的信息,不過此時(shí)Main的信息還沒有填充完,因?yàn)橹熬褪菫榱颂畛洳呸D(zhuǎn)到A的,這時(shí)從已有的空的Main中拿不到D,就會(huì)報(bào)錯(cuò),ImportError。
所以,項(xiàng)目中盡量不要循環(huán)import,很可能會(huì)產(chǎn)生這樣的錯(cuò)。那么一旦產(chǎn)生怎么解決?
可以把import語(yǔ)句盡可能往后放,比如放到文件最后,那么應(yīng)該是沒問題的,因?yàn)閳?zhí)行到import時(shí),已經(jīng)確保了當(dāng)前的腳本的內(nèi)容已經(jīng)注冊(cè)到了內(nèi)存的map中。
當(dāng)然也可以放到函數(shù)的內(nèi)部,即其他模塊的調(diào)用處。
from lib import lib1 def func1(): print("main.func1") lib1() def func2(): print("main.func1") func1()
main.py
from main import func2 def lib1(): func2() print("lib.lib1") def lib2(): func2()
lib.py
感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“python中循環(huán)import的用法示例”這篇文章對(duì)大家有幫助,同時(shí)也希望大家多多支持創(chuàng)新互聯(lián)成都網(wǎng)站設(shè)計(jì)公司,關(guān)注創(chuàng)新互聯(lián)成都網(wǎng)站設(shè)計(jì)公司行業(yè)資訊頻道,更多相關(guān)知識(shí)等著你來(lái)學(xué)習(xí)!
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、網(wǎng)站設(shè)計(jì)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。