關(guān)于python中模塊和重載的問題
模塊和重載
簡單來講,任意一個以.py結(jié)尾的python文件都是一個模塊。例如有A.py和B.py兩個文件。在A中可以通過導(dǎo)入B來讀取B模塊定義的內(nèi)容,導(dǎo)入操作本質(zhì)上就是載入另一個文件。
基于模塊的模型是python程序架構(gòu)背后的核心思想。
一個大型python程序往往以多個模塊文件的形式出現(xiàn),并且從其它模塊導(dǎo)入工具。但是通常會指定一個模塊文件作為主文件(也叫頂層文件),該文件啟動之后,就會運行整個程序。除了頂層文件之外的其他文件都是導(dǎo)入模塊。
導(dǎo)入操作將會導(dǎo)致模塊中的代碼被運行,因此導(dǎo)入文件也是一種運行python文件的方法。 模塊文件只有第一次被導(dǎo)入的時候會被執(zhí)行,之后就不會被執(zhí)行。如下圖所示:

如果你想在同一個python會話中,多次運行模塊文件,你需要調(diào)用importlib模塊的reload方法(reload方法在python2中是內(nèi)置方法,在python3中需要從importlib模塊中導(dǎo)入)。如下圖所示:

reload函數(shù)載入并運行了代碼,如果你對reload載入的代碼做過修改,那么下一次reload將會載入修改過的代碼。如下圖所示:

注意,reload函數(shù)使用的前提是之前import過該模塊,否則會報錯。
因為reload希望獲得的參數(shù)是一個已經(jīng)被導(dǎo)入過的模塊名稱。
reload函數(shù)是不傳遞的,也就是說你重載了A文件,A文件中導(dǎo)入的模塊不會被重載。

導(dǎo)入和重載提供了一種自然的程序啟動選項。模塊其實起到了一個命名空間的作用。而模塊中的變量就是屬性。
導(dǎo)入模塊可以使用import也可以使用from。它們之間是有一定的差別的,from是復(fù)制了模塊的屬性,使得屬性成為該文件的直接變量。這時候你就能直接使用該屬性。例如:

使用load模塊的屬性a,需要使用object.attributu的方式來使用。而b是通過from方法導(dǎo)入的,則不需要,因為from將b復(fù)制到了該文件中,而不是依舊存在于load這個命名空間。
無論是import還是from導(dǎo)入文件,都不需要加python文件擴展名.py,如果你一不小心加上了,那么會報錯。
模塊與命名空間
每個模塊都是自包含的命名空間,一個模塊文件無法獲得另一個模塊文件中的變量,除非它顯示的導(dǎo)入那個文件。每一個模塊都是一個獨立的命名空間。
到此這篇關(guān)于關(guān)于python中模塊和重載的問題的文章就介紹到這了,更多相關(guān)python 模塊和重載內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python實現(xiàn)文件只讀屬性的設(shè)置與取消
這篇文章主要為大家詳細介紹了Python如何實現(xiàn)設(shè)置文件只讀與取消文件只讀的功能,文中的示例代碼講解詳細,感興趣的小伙伴可以了解一下2023-07-07
關(guān)于python簡單的爬蟲操作(requests和etree)
這篇文章主要介紹了關(guān)于python簡單的爬蟲操作(requests和etree),文中提供了實現(xiàn)代碼,需要的朋友可以參考下2023-04-04
詳解如何使用Python網(wǎng)絡(luò)爬蟲獲取招聘信息
在疫情階段,想找一份不錯的工作變得更為困難,很多人會選擇去網(wǎng)上看招聘信息??墒钦衅感畔⒂幸恍┦清e綜復(fù)雜的。本文將為大家介紹用Python爬蟲獲取招聘信息的方法,需要的可以參考一下2022-03-03
關(guān)于Python使用logging庫進行有效日志管理的方法詳解
在開發(fā)大型軟件或處理復(fù)雜問題時,我們經(jīng)常需要一種方法來記錄和跟蹤程序的運行狀態(tài),Python 提供了一個名為 logging 的標準庫,可以幫助我們更好地完成這項任務(wù),在這篇文章中,我們將介紹如何使用 Python 的 logging 庫進行日志記錄2023-06-06
Pycharm中安裝wordcloud等庫失敗問題及終端通過pip安裝的Python庫如何添加到Pycharm解釋器中(
這篇文章主要介紹了Pycharm中安裝wordcloud等庫失敗問題及終端通過pip安裝的Python庫如何添加到Pycharm解釋器中,本文給大家介紹的非常詳細,需要的朋友可以參考下2020-05-05

