您現在的位置是:首頁 > 運動

零基礎學習 Python 之模組(一)

由 Python空間 發表于 運動2022-12-31
簡介py 的檔案,你想把它作為一個模組引入,就必須先告訴 Python 直譯器我們寫了這麼一個檔案:>>>import sys>>>sys,path

如何編寫python模組

零基礎學習 Python 之模組(一)

本文字數:1862 字

閱讀本文大概需要:5 分鐘

寫在之前

隨著我們對 Python 的逐步學習,相信 Python 的強大你也感覺到了,它主要體現在 Python 的「模組」上,因為 Python 不僅有很強大的標準庫,還有數不勝數的第三方模組(或者包,庫),並且許多的開發者還在不斷的貢獻著自己的新模組。

正是因為 Python 強大的「模組自信」和它開放包容的態度,Python 才被很多人所鍾愛,並且這種方式也在不斷的被其他更多的語言所借鑑,幾乎成了普世行為。

編寫模組

學到現在,相信你已經很熟悉 import 語句了,下面我們來看一個之前說過的例子:

>>> import math

>>> math。pow(2,3)

8。0

這裡的 math 就是 Python 標準庫中的一個,用 import 引入這個模組,然後可以使用他這裡面的方法,比如 pow()。顯然不需要自己動手來寫具體的函式,我們要做的就是拿過來直接用,這就是模組的好處。

這裡有一點需要注意的是,我們所說的「模組」,「庫」,「包」什麼的是有區別的,只不過我們現在不區分,隨著學習的深入就會慢慢明白的。

模組是什麼?

模組是什麼?「模組是程式」!大佬們的話一語道破本質,

它就是一個副檔名為 .py 的 Python 程式,

我們要在應該使用它的時候將它引用過來,不需要重寫雷同的程式碼。

這裡可能會有人問:但是如果要我們自己寫一個 。py 檔案,是不是就可以作為模組 import 呢?事情遠沒有那麼簡單,還必須讓 Python 直譯器可以找到你寫的模組才可以:比如我們在 /usr/lib 下建了一個名為 test。py 的檔案,你想把它作為一個模組引入,就必須先告訴 Python 直譯器我們寫了這麼一個檔案:

>>>import sys

>>>sys,path。append(“/usr/lib/test。py”)

用上述的方式就是告訴 Python 直譯器我們寫的那個檔案在哪裡,在這個告訴的方法中也用了 import sys,不過 sys 是 Python 的標準之一,所以不需要特別告訴 Python 直譯器的位置。

上面的是在 Ubuntu 系統的地址格式(我隨手寫的地址),如果用的是 windows 的話,則要注意檔案路徑的寫法,直接 import test 就好,然後再呼叫裡面的東西就好了,形式是「模組名。屬性或類」,當然,如果不存在的話就會報錯。

到這裡,你可以去看一下你剛才儲存的 test。py 的目錄中,是不是又多了一個 __pycache__ 的目錄,並且該目錄下還有 pm。cpython-**。pyc 檔案,這個就是剛才 test。py 檔案編譯之後的檔案。

不知道你是否還記得前面寫完程式然後要執行時我們常常用到 if __name__ == “__main__”,那時候我們直接用 python **。py 的格式來執行該程式,此時我們同樣也有了 。py 檔案,不過在這裡是作為模組引入的。

PS:一般情況下,如果僅僅時作為模組引入,不必寫 __name__ == “__main__”。

模組的位置

為了讓我們自己寫的模組可以被 Python 直譯器知道,需要用 sys。path。append(“/usr/lib/test。py”)。你看,這多麻煩,這麼麻煩還是我們 Python 嘛!所以,Python 想了一招,把所有可用的模組都加入到了 sys。path 中,用下面的方法可以看到模組所在的位置:

>>> import sys

>>> import pprint

>>> pprint。pprint(sys。path)

打印出來的結果,你可以看到我們自己寫的那個檔案,結果列表裡所包括位置內的 。py 檔案都可以作為模組引入。

將模組檔案放到指定的位置是一種不錯的方法,但是作為一個放飛自己愛自由的程式設計師,你就得想能不能放到別處呢?答案是肯定的,用 sys。path。append() 就可以做到,不管把檔案放在哪裡,都可以把其位置告訴 Python 直譯器。雖然這種方法在前面使用了,但其實這個很不常用,因為它也有麻煩的地方,比如在互動模式下,如果關閉了當前的 terminal,再重新開啟一個的話又得重新告知。那麼有沒有舒服點的方法呢?有的,比較常用的就是「設定環境變數」,相信這個對於現在的你來說是小菜一碟的事情,實在不會的話隨便 Google 一下,答案一大把。

寫在之後

今天就是繼續瞭解一下模組,上面的模組雖然看起來比較簡單,但是已經顯示了編寫模組和在程式中匯入模組的基本方式。當然了,在實踐中所編寫的模組也許更復雜一些,明天我們將來練習一下,然後再學習一下「庫 & 包」,敬請期待。

如果你覺得本篇文章對你有所幫助,歡迎點贊轉發,謝謝支援。

The end。

推薦文章

  • 文玩騙局還“挑人”?這種文玩,老爺們兒不騙,專騙小姐姐!

    文玩騙局還“挑人”?這種文玩,老爺們兒不騙,專騙小姐姐!一、顏色豐富佘太翠的確算是一種天然的玉石,並且因為不同成分的含量不同,呈現的顏色也不同,有白色,青色和翠色三種,並且因為過度的層次感不同,還會有青白,灰白,豆綠和墨綠等多種顏色,而女性玩家永遠對這種花花綠綠的玉石沒有抵抗力,再加上現在的商家...

  • 廣州刑事律師吳國雄:多次境外“代購”藥品,可能涉嫌走私毒品罪

    三、律師評析廣州刑事辯護律師吳國雄認為:1、如果律師透過會見及閱卷後,看到的證據與上述描述一致,那麼王某多次向境內郵寄了多包“藥品”,且其知道其“代購”的部分藥品在境內屬於管制類精神藥品,但為了獲取高額的利潤,仍抱著僥倖心理多次從香港批發精...

  • 火箭訊息:3新星入選全明星,小波特未考慮復出,榜眼傷情更新

    火箭訊息:3新星入選全明星,小波特未考慮復出,榜眼傷情更新最後需要談及的是,火箭在對陣雷霆比賽之前的傷病報告已經出爐,除了小凱文-波特無法出戰之外,火箭新星杰倫-格林也將無法出戰這場比賽:而且據美媒亞當-斯波拉內的說法,杰倫-格林並沒有參加火箭今天的隊內訓練:杰倫-格林毫無疑問是這支火箭陣中最好的...