關于python中模塊和重載的問題
模塊和重載
簡單來講,任意一個以.py結尾的python文件都是一個模塊。例如有A.py和B.py兩個文件。在A中可以通過導入B來讀取B模塊定義的內(nèi)容,導入操作本質(zhì)上就是載入另一個文件。
基于模塊的模型是python程序架構背后的核心思想。
一個大型python程序往往以多個模塊文件的形式出現(xiàn),并且從其它模塊導入工具。但是通常會指定一個模塊文件作為主文件(也叫頂層文件),該文件啟動之后,就會運行整個程序。除了頂層文件之外的其他文件都是導入模塊。
導入操作將會導致模塊中的代碼被運行,因此導入文件也是一種運行python文件的方法。 模塊文件只有第一次被導入的時候會被執(zhí)行,之后就不會被執(zhí)行。如下圖所示:
如果你想在同一個python會話中,多次運行模塊文件,你需要調(diào)用importlib模塊的reload方法(reload方法在python2中是內(nèi)置方法,在python3中需要從importlib模塊中導入)。如下圖所示:
reload函數(shù)載入并運行了代碼,如果你對reload載入的代碼做過修改,那么下一次reload將會載入修改過的代碼。如下圖所示:
注意,reload函數(shù)使用的前提是之前import過該模塊,否則會報錯。
因為reload希望獲得的參數(shù)是一個已經(jīng)被導入過的模塊名稱。
reload函數(shù)是不傳遞的,也就是說你重載了A文件,A文件中導入的模塊不會被重載。
導入和重載提供了一種自然的程序啟動選項。模塊其實起到了一個命名空間的作用。而模塊中的變量就是屬性。
導入模塊可以使用import也可以使用from。它們之間是有一定的差別的,from是復制了模塊的屬性,使得屬性成為該文件的直接變量。這時候你就能直接使用該屬性。例如:
使用load模塊的屬性a,需要使用object.attributu的方式來使用。而b是通過from方法導入的,則不需要,因為from將b復制到了該文件中,而不是依舊存在于load這個命名空間。
無論是import還是from導入文件,都不需要加python文件擴展名.py,如果你一不小心加上了,那么會報錯。
模塊與命名空間
每個模塊都是自包含的命名空間,一個模塊文件無法獲得另一個模塊文件中的變量,除非它顯示的導入那個文件。每一個模塊都是一個獨立的命名空間。
到此這篇關于關于python中模塊和重載的問題的文章就介紹到這了,更多相關python 模塊和重載內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Python Requests模擬登錄實現(xiàn)圖書館座位自動預約
這篇文章主要為大家詳細介紹了Python Requests的模擬登錄,Python實現(xiàn)圖書館座位自動預約,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-04-04pandas pd.read_csv()函數(shù)中parse_dates()參數(shù)的用法說明
這篇文章主要介紹了pandas pd.read_csv()函數(shù)中parse_dates()參數(shù)的用法說明,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-03-03Python爬蟲實現(xiàn)抓取京東店鋪信息及下載圖片功能示例
這篇文章主要介紹了Python爬蟲實現(xiàn)抓取京東店鋪信息及下載圖片功能,涉及Python頁面請求、響應、解析等相關操作技巧,需要的朋友可以參考下2018-08-08Python中數(shù)字(Number)數(shù)據(jù)類型常用操作
本文主要介紹了Python中數(shù)字(Number)數(shù)據(jù)類型常用操作,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2023-02-02