關於python中模組和過載的問題

2022-09-24 18:06:08 字數 1070 閱讀 7214

目錄

簡單來講,任意乙個以.py結尾的python檔案都是乙個模組。例如有a.py和b.py兩個檔案。在a中可以通過匯入b來讀取b模組定義的內容,匯入操作本質上就是載入另乙個檔案。

基於模組的模型是python程式架構背後的核心思想。

乙個大型python程式往往以多個模組檔案的形式出現,並且從其它模組匯入工具。但是通常會指定乙個模組檔案作為主檔案(也叫頂層檔案),該檔案啟動之後,就會執行整個程式。除了頂層檔案之外的其他檔案都是匯入模組。

匯入操作將會導致模組中的**被執行,因此匯入檔案也是一種執行python檔案的方法。模組檔案只有第一次被匯入的時候會被執行,之後就不會被執行。如下圖所示:

如果你想在同乙個python會話中,多次執行模組檔案,你需要呼叫www.cppcns.comimportlib模組的reload方法(reload方法在程式設計客棧python2中是內建方法,在python3中需要從importlib模組中匯入)。如下圖所示:

reload函式載入並執行了**,如果你對reload載入的**做過修改,那麼下一次reload將會載入修改過的**。如下圖所示:

注意,reload函式使用的前提是之前import過該模組,否則會報錯。

因為reload希望獲得的引數是乙個已經被匯入過的模組名稱。

reload函式是不傳遞的,也就是說你過載了a檔案,a檔案中匯入的模組不會被過載。

匯入和過載提供了一種自然的程式啟動選項。模組其實起到了乙個命名空間的作用。而程式設計客棧模組中的變數就是屬性。

匯入模組可以使用import也可以使用from。它們之間是有一定的差別的,from是複製了模組的屬性,使得屬性成為該檔案的直接變數。這時候你就能直接使用該屬性。例如:

使用load模組的屬性a,需要使用object.attributu的方式來使用。而b是通過from方法匯入的,則不需要,因為from將b複製到了該檔案中,而不是依舊存在於load這個命名空間。

無論是import還是from匯入檔案,都不需要加python副檔名.py,如果你一不小心加上了,那麼會報錯。

每個模組都是自包含的命名空間,乙個模組檔案無法獲得另乙個模組檔案中的變數,除非它顯示的匯入那個檔案。每乙個模組都是乙個獨立的命名空間。

Python中關於模組的 name

在python的每個模組中,都內建了很多變數,其中有乙個就是 name 變數。該變數在模組被匯入或直接執行時,其值是不一樣的 比如有乙個模組test debug true class fooclass object foo class pass def test test function if d...

關於python中的tkinter模組

python2.7和python3.6中的tkinter是兩個包,不會自動公升級,假如在fedora28做開發的話,錯誤 用import tkinter import tkinter import tkinter 都會失敗,網上的解決辦法 1.yum install python tk 這裡預設安裝...

關於Python模組中 init

區分乙個含有python指令碼的資料夾和python包 可以執行import package操作的資料夾 的標誌就是看,這個資料夾下有沒有 ini py檔案,當乙個資料夾下有這個檔案,你可以進行匯入相關操作,但是如果這個資料夾沒有這個檔案,那麼python直譯器是沒有辦法去執行import操作的,直...