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