您好,登錄后才能下訂單哦!
本篇內容介紹了“Python中怎么控制from xxx import *導入的成員”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
默認情況下,所有的成員都會被導入。但可以修改__all__變量控制哪些成員可以被導入。該變量是字符串列表(或元組),內部元素是可被導入的成員名。
示例請看下圖:test1模塊中有name、age、height三個成員,__all__變量保存了這三個成員名。test2模塊用from test1 import *導入test1所有成員,此時test2模塊可以正常使用test1的三個成員。
再看下圖:test1模塊中__all__變量保存了三個成員名,但注釋了height這個成員(注意列表的書寫方式,一個元素一行,用ctrl+/注釋不能被導入的成員非常方便。如果所有內容寫在一行時就不能注釋內部元素,只能刪除),test2模塊用from test1 import *導入test1的所有成員,此時只能使用name和age這兩個成員,height成員不能使用。
注意:使用import 模塊時,__all__不起作用。請看下圖示例,test2模塊用import test1導入test1的所有成員后,即使test1的height成員在__all__變量中被注釋了,仍然可以正常使用。
在大型項目中經常會遇到模塊文件很多的情況,為了方便管理一般會按功能分別建立多個文件夾,在不同文件夾下各自有多個模塊,各個模塊之間還存在相互引用的情況。今天先梳理一種絕對導入的方法。
有一個項目,路徑是D:\Python自學筆記\模塊,在該項目下有多個模塊和文件夾,其中aa文件夾下有b文件夾,b文件夾內有bb.py模塊。
注意紅圈的內容,實際上python解釋器會在加載.py文件時自動生成sys.path列表信息,sys.path[0]是當前模塊的完整路徑,sys.path[1]是當前模塊的項目路徑。
現bb模塊需要調用cc模塊的成員num2,可以通過from aa.c.cc import *的方法,其中b模塊已知項目路徑是“D:\Python自學筆記\模塊”,然后加上aa文件夾名再加上.c文件夾名再加.cc模塊名,即可絕對導入cc.py模塊中所有的成員。
在項目路徑“D:\Python自學筆記\模塊”下有test_import.py模塊,可以通過絕對導入的方式導入bb模塊(另外bb模塊中已經絕對導入cc模塊,所以相當于同時導入了bb和cc),還可以通過import導入同路徑下的test1模塊。
絕對路徑導入方法簡潔易懂,要參與大型項目必須得學會這項技能。深入學python的朋友們最好自行敲代碼多多練習加以熟練掌握。
“Python中怎么控制from xxx import *導入的成員”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。