您好,登錄后才能下訂單哦!
這篇文章主要介紹了python中循環import的用法示例,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
import介紹
import語句作用就是用來導入模塊的,它可以出現在程序中的任何位置。
import語句語法
使用import語句導入模塊,import語句語法如下:
import module
關鍵字 模塊名
使用方法例如:
import math #入導math模塊
math.floor() #調用math模塊中的floor()函數
如果要同時導入多個模塊,只需要在模塊名之前用逗號進行分隔:
import module1,module2,module3.......
同時導入多個模塊的方法,對于初學者來說可讀性和可理解性不如第一種好。所以想要導入多個模塊時,還是比較推薦用第一種方式,把每一個模塊都單獨進行一次導入,可能會感覺操作起來麻煩一些,但便于理解。
引用
最近項目組用python,慢慢開始學習了。第一天就遇到了import問題。
python語言的import有兩種方法,一個是import 模塊名,一個是from 模塊名 import 函數或者類或者變量。
直接import只能import模塊,不能import 模塊里面的內容。使用內容必須加上模塊名。
在import的時候,系統會把所有的加載的模塊載入內存,并且放入一個map中,from A import B的過程是,看是否有A模塊在系統中加載,如果有則直接拿出來,否則新建一個,這時需要填充A模塊的內容,就需要執行A模塊的文件。一旦構建好了A模塊,那么就可以從A里面取B了,如果沒有就報錯。
上述邏輯是如果用A,A沒有載入,就執行A,否則就直接返回A的函數或者變量。這個時候就有一個問題,當前腳本Main第一次執行,需要執行from A import ,發現沒有A,就新建一個A在內存中,然后填充A模塊的信息,就會去執行A,此時,A里面要 from Main import D,那么因為Main已被執行,就直接從內存的map中取得Main的信息,不過此時Main的信息還沒有填充完,因為之前就是為了填充才轉到A的,這時從已有的空的Main中拿不到D,就會報錯,ImportError。
所以,項目中盡量不要循環import,很可能會產生這樣的錯。那么一旦產生怎么解決?
可以把import語句盡可能往后放,比如放到文件最后,那么應該是沒問題的,因為執行到import時,已經確保了當前的腳本的內容已經注冊到了內存的map中。
當然也可以放到函數的內部,即其他模塊的調用處。
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
感謝你能夠認真閱讀完這篇文章,希望小編分享的“python中循環import的用法示例”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。