模塊的定義
方式一:使用自己的模塊
import語句
from … import … 語句
if __name__ == '__main__'
方式二:使用他人的模塊
探究他人模塊
自學模塊
學習CSV模塊
那什麼是模塊呢?
之前我們學過函數, 我們說函數就如同包裹,它封裝了一段代碼,可以實現所需功能。
後來我們學了類,我們發現,類比函數更強大,它封裝了屬性與方法,可以實現更多的功能。
今天我們學習一下模塊,這個就是江湖中爭奪的儲物戒指,因為它比函數、類強大很多,能夠封裝更多的功能代碼。用句專業術語來講: 模塊是最高級別的程序組織單元,它將程序代碼和數據封裝起來以便重用。也就是模塊可以封裝任何數據、代碼。
在上節課中,我們編輯了一個名為readfile.py的文件,這個後綴名為.py的文件就是一個單獨的模塊。其實,在我們每次的教學課堂中,我們運行的代碼也是運行在一個後綴為.py的文件上,只不過我們為了方便大家,隱藏了文件名字。
每一個後綴名為.py的文件都是模塊。模塊作用就是將數據、代碼封裝起來,以便再使用。模塊不僅僅我們自己使用,也可以把它給別人使用,就像傳遞文件一樣那麼簡單。好了,接下來,我們看一看模塊使用的方式。
建立模塊,就是建立.py文件。在其中一個.py文件中引入另一個.py文件。如下圖:我們在main.py模塊中引入mytest.py模塊。
請你閱讀main.py與mytest.py中的文件內容,並直接運行main.py文件。
這就是main.py文件引入了mytest.py模塊,將mytest.py的內容輸出出來了。就一句代碼 import mytest,下面,我們先來看一看import這就是main.py文件引入了mytest.py模塊,將mytest.py的內容輸出出來了。就一句代碼 import mytest,下面,我們先來看一看import
import語句可以導入一個模塊,目的不僅僅是列印語句,更主要的是可以使用模塊中的變量、函數與類。
def hello():
intro = "你好,我是馭風少年函數"
print("hello函數正在運行")
class Test:
strClass = "我是類,我是馭風少年"
def go(self):
print("類在運行")
print(strtest) #列印變量strtest
hello() #運行函數hello()
shaonian = Test() #Test類的實例化
print(shaonian.strClass) #列印實例屬性
shaonian.go() #調用實例方法go方法
在這段代碼中,賦值變量、定義函數、定義類、使用變量、調用函數、實例化對象都在一個文件中。我們通過使用模塊,把賦值變量、定義函數、定義類放在mytest.py文件中,把使用變量、調用函數、實例化對象放在main.py文件中
import mytest #導入mytest模塊
print(mytest.strtest) #列印mytest模塊中變量strtest
mytest.hello() #運行mytest模塊中函數hello()
shaonian = mytest.Test() #mytest模塊中Test類的實例化
import還有另外一種用法,就是import…as… 先看一下下面例子。
如果你嫌mytest名字太長,就可以使用import…as…語句,可以將mytest的名字變成ts,這樣在後面需要使用mytest模塊名的地方,就可以換成ts名字使用。還有,當我們需要導入多個模塊時,我們可以使用逗號,將模塊名隔開。例如: import x,y,z 就是將X.py文件,Y.py文件,Z.py文件同時引入。好了,這就是import語句。下面我們來學習一下from…import語句。
from…import…語句可以將某一模塊的部分代碼導入到另一個模塊中。
還是上面那個案例,我們來改造一下。
運行一下下面代碼, 觀察終端裡的效果。我們將mytest.py文件中的變量與函數引導main.py中使用,這樣使用時無需加入」模塊名」前綴同樣,我們這次引入變量與函數,我們可以將:
這就是from…import…語句的用法。
在講if __name__ == '__main__'語句之前,先給大家介紹一下」程序的入口」。
Python與其他語言一樣,程序都要有一個運行入口。當我們運行某個py文件時,就能啟動整個程序。那麼這個py文件就是程序的入口。
就像上面那個案例:
當然, 以後還會遇到更複雜的情況, 只有一個主模塊,引入了其他多個模塊。
當我們有很多py文件在一個程序中,但是你只能指定一個程序入口。這樣你就需要使用if __name__ == '__main__':來指定某個py文件為程序入口。第一種情況:加上這一句代碼,程序和原來一樣:
這就是,當把mytest.py導入到main.py文件中,在mian.py中加入if __name__ == '__main__': 執行main.py, 程序正常執行。
運行first.py代碼,你會發現,只能輸出」我是a模塊」。
這是因為,此時mian.py文件已經不再是程序的入口。main.py文件導入到了first.py文件中,first.py文件運行的時候,只會執行mian.py文件中本身代碼,不會執行if __name__ == '__main__':後面的代碼。總結下if __name__ == '__main__':語句的用法
好了,這就是如何使用我們自己的模塊。接下來,我們學習下如何使用他人模塊。
運行代碼你會發現,先列印「hello」,延遲3秒後才列印「python」這就是time模塊中的time.sleep(3)語句起作用了。你還使用過Python自帶的random模塊。運行一下下面代碼,觀察終端裡的效果。
這就是我們之前使用Python自帶的time與random模塊的用法。Python世界中, 為我們提供了很多內置的模塊; 也可以引入一些其他第三方的模塊。使用其他第三方模塊, 如爬蟲模塊, 數據分析模塊, 會在其他課程中具體講解。這節課, 我們來探究下Python的內置模塊。們在Python環境中,找到了time.py文件中的代碼:
代碼很長很長, time.py文件中的結構如下:
我們可以看到我們經常使用的sleep()函數。
def sleep(secs: float) -> None: ...
secs:float 就決定了,需要延遲時間,也可以傳入浮點數類型的數值。我們可以查看Python中所有內置模塊的語法。
學習模塊, 就是要學會模塊的功能,也就是模塊中的函數方法如何使用。
我們可以把time模塊重點的功能內容做成筆記:
這就是time模塊的內容。這是比較小的模塊,知識點比較單一的模塊,還可以自學;但是對於知識點比較複雜的龐大模塊,就比較困難了。比如說數據分析的NumPy與pandas模塊,這就需要進行系統學習的。好了, 接下來,帶大家學習一個CSV模塊。CSV是一種比較實用又簡單的模塊。學完CSV模塊,就可以使用程序來處理excel表格了。
我們先在excel中新建一個excel表格, 但是要選擇」CSV」格式. 我將這個文件保存成」mytest.csv」
在」mytest.csv」文件中,寫下如下內容:
運行結束後, 我們看到終端輸出的每一行信息都是一個列表 。
接下來我們看一下CSV文件的寫入方法:
writer是實例化對象,writerow()是寫入的方法,括號內的數據是列表形式。
運行一下下面代碼,觀察csv文件裡的效果。
這就是csv文件的寫入。好了, 這節課的內容就講到這裡了。我們今天學習了模塊引入, 模塊調用, 學習使用Python內置模塊。內容很多, 大家要記得復哦。
我們下節課見。