您好,登錄后才能下訂單哦!
這篇文章運用簡單易懂的例子給大家介紹什么是Python模塊,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。
模塊
如果你從 Python 解釋器退出然后再進入它,你所做的定義(函數和變量)都會消失。因此,如果你想寫某些更長的程序,你最好使用一個文本編輯器來為解釋器準備輸入,然后以這個文件作為輸入來運行程序。這也被稱為創建一個 腳本。當你的程序變得更長,你也許會想將它分成幾個文件方便管理。你也許還想在幾個程序中直接使用函數而不用在每個程序中拷貝函數定義。
為了支持這種特性,Python 可以把定義放入一個文件中然后在一個腳本或交互式解釋器實例中使用它。這個文件被叫做 模塊 (module),模塊中的定義可以通過 導入 進入到其他模塊或者 主 模塊(你在頂層和計算器模式下執行的腳本中可以訪問的變量集合)。
一個模塊是一個包含 Python 定義和聲明的文件。文件是模塊名加上 .py 后綴。在一個模塊中,模塊名(字符串類型)可以通過全局變量 __name__ 獲取。例如,使用你最喜歡的文本編輯器在當前目錄下創建一個叫 fibo.py 的文件,這個文件包含以下內容
# 斐波那契數模塊 def fib(n): # 打印斐波那契數直到 n a, b = 0, 1 while a < n: print(a, end=' ') a, b = b, a+b print() def fib2(n): # 返回到 n 的斐波那契數 result = [] a, b = 0, 1 while a < n: result.append(a) a, b = b, a+b return result
現在進入 Python 解釋器然后通過下面的命令導入這個模塊
>>> import fibo
這樣做不會直接在當前環境中導入 fibo 中定義的函數名,只會導入名為 fibo 的模塊。使用模塊名可以獲取模塊中定義的函數:
>>> fibo.fib(1000) 0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 >>> fibo.fib2(100) [0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89] >>> fibo.__name__ 'fibo'
如果你打算經常使用一個函數,你可以把它賦值給一個局部變量
>>> fib = fibo.fib >>> fib(500) 0 1 1 2 3 5 8 13 21 34 55 89 144 233 377
模塊進階
一個模塊可以包含可執行聲明包括函數定義。這些聲明被用于初始化模塊。它們只在模塊被 第一 次導入時執行。 [1](如果文件被作為腳本運行它們也會被執行)
每個模塊都有其私有的符號表,模塊中定義的所有函數將這個符號表作為全局符號表。因此,一個模塊的作者可以在模塊中使用全局變量而無需擔心與其他模塊的全部變量沖突。另一方面,如果你知道你在干什么,你同樣可以使用 模塊.變量 的方式來獲取一個模塊的全局變量。
模塊可以導入其他模塊。將所有 import 語句放在模塊(或者腳本,如果這個問題重要的話)的開頭不是必須的,但習慣如此。被導入的模塊名被放置于當前模塊的全局符號表中。
import 聲明的一種變體可以把一個模塊中的變量直接導入當前模塊的符號表中。例如:
>>> from fibo import fib, fib2 >>> fib(500) 0 1 1 2 3 5 8 13 21 34 55 89 144 233 377
這樣做不會把模塊名引入本地符號表中(因此上面的例子里,fibo 沒有被定義)
還有一種導入聲明的變體可以導入一個模塊中定義的所有變量:
>>> from fibo import * >>> fib(500) 0 1 1 2 3 5 8 13 21 34 55 89 144 233 377
這會導入模塊中除了以下劃線(_)開頭的所有名稱。大多數情況下 Python 程序員不使用這個機制,因為它會為解釋器引入一系列位置未知變量,從而有可能覆蓋你已經定義的某些變量。
請注意,一般來說,使用 import * 導入模塊或包是不受歡迎的,因為這通常會降低代碼可讀性。但在使用交互型解釋器為了減少打字而使用它是允許的。
如果模塊名后緊跟 as, 那么 as 后的變量名會與被導入的模塊名綁定。
>>> import fibo as fib >>> fib.fib(500) 0 1 1 2 3 5 8 13 21 34 55 89 144 233 377
這與 import fibo 的方式導入相同,除了模塊現在被命名為 fib 而不是 fibo。
使用 from 時可以使用這個機制達到相同的效果:
模塊搜索路徑
當一個名為 spam 的模塊被導入時,解釋器首先尋找同名的內建模塊。如果沒有發現同名內建模塊,解釋器會根據 sys.path 提供的一系列路徑下尋找名為 spam.py 的文件。sys.path 根據下面這些位置進行初始化:
包含輸入腳本的目錄(如果沒有指明文件則為當前目錄)
PYTHONPATH 一個目錄的列表,語法與 shell 的 PATH 變量相同。
安裝依賴默認路徑。
關于什么是Python模塊就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。