當項目中的模塊過多,或功能劃分不夠清晰時會出現循環引用的問題,如下
有兩個模塊moduleA 和 moduleB:
這種情況下就會出現以下的錯誤 :
這就是循環引用導緻的
導入的實質
導入其實是要将 被導入模塊所有的頂格代碼都執行一遍,遇到函數和類的定義會作申明。 如果b模塊中有這麼一句
print ‘bbb’ 你在a模塊impot b時就會 執行 print 'bbb’這一句。
回到循環引用中,首先導入B,進入B中,發現B中又導入了A又回到A中,但是A又導入B這就形成了循環引用。
解法1:直接導入模塊名,通過模塊調用其中的函數
具體原因我也不太清楚。
解法2:使用延遲導入(lazy import) 在需要用的函數内部導入,或是在底部導入
解法3:重新設計代碼結構,将代碼合并或者分離
這個要看情況 而定了,将公共功能的代碼分離成單獨模塊,或者将一些具有關系的代碼合并成一個模塊。
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!