20課零基礎快速學python代碼模塊的定義 使用自己的模塊

2020-12-03 天天讀史

模塊的定義

方式一:使用自己的模塊

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內置模塊。內容很多, 大家要記得復哦。

我們下節課見。

相關焦點

  • 三分鐘從入門到精通——Python模塊
    您花了30分鐘來定義一個函數,然後使用它並退出解釋器。但是突然間,您記住仍然需要再次使用該功能。您再次輸入它,但該功能的定義已消失。哎呀,好痛。現在,您再次需要花費30分鐘來鍵入相同的功能。因此,python有一種方法可以將該函數定義放入文件中並隨時使用。模塊是ModuleType類型的對象。
  • python sys模塊的常見用法匯總
    python的內置模塊sys,提供了系統相關的一些變量和函數,在實際開發中,常見的有以下幾種用法1., 針對只適用於linux平臺的代碼,通過sys來判斷當前作業系統是否符合要求。版本有限制的代碼,可以通過以上方法來判斷python版本是否符合要求。
  • Python語言基礎50課(3)​|一行代碼統計序列ATCG含量
    幾篇推文進行回溯:Python語言基礎50課Python語言基礎50課(2)我的Python - 100天筆記 |D1-D7我的Python - 100天筆記 |D8-D14今天的推文內容主要涵蓋:集合& 列表生成式(統計ATCG含量);函數與模塊(內置函數),下面就進入正題:集合我們常說的Python
  • Python的武器庫05:numpy模塊(下)
    說到程式語言python,有一個著名的格言"餘生太短,只用python"。如果要分析為什麼會存在這麼一句格言?python的語法並不簡單,有複雜難懂的部分,之所以有這樣一句格言,是因為python中有很多強大的模塊,就像一個武器庫。
  • Python語言中使用array模塊實現動態數組的操作
    背景對於動態數組諸如創建、插入、刪除、查詢大小等操作,在C/C++語言中,可以使用標準庫中的vector類實現,而在python語言中,也同樣提供了內置的array模塊實現類似的功能。下面通過例子講解array模塊的常用操作。動態數組的創建創建方式為:array.array(typecode[, initializer]),第1個參數typecode定義了數組元素的類型,第2個可選參數給出了數組中的初始值。如下面的代碼創建了一個int型的包含3個元素的數組x,其初始值為分別為1、2、3。
  • Python內置模塊math介紹
    # 導入模塊import math#dir(module):可以通過它查看任何模塊中所包含的工具
  • Python神器:找不到模塊怎麼辦?pip安裝器一鍵全搞定
    一個錯誤從上圖中可以看到運行編寫的python程序時,出現了ModuleNotFoundError的提示,意思python解釋器找不到名為pandas的模塊/庫 !pip安裝器一、使用pip安裝器解決上述代碼錯誤使用命令安裝pandas模塊:pip install pandas具體方法如下:
  • 基於python+OpenCV模塊的人臉識別定位技術
    本文將基於OpenCV模塊,在windows作業系統上,利用python語言,進行人臉識別技術的研究。當然OpenCV的應用領域很廣,除了人臉識別之外,它還支持圖像分割、動作識別、視頻處理等技術。首先看一下實現的效果:OpenCV模塊的下載與安裝OpenCV模塊下載安裝很簡單。
  • python測試函數模塊unittest
    1.測試函數在編寫完代碼後進行對代碼測試是否有錯誤2.pytho標準庫中的模塊unittest為代碼測試工具例如:name_function.py 模塊名def get_formatted_name(first, last): full_name = first + ' ' + last
  • Pyfastx:一個快速隨機讀取基因組數據的Python模塊
    今天介紹一個同門師兄開發的 Python 模塊:pyfastx,用於快速隨機訪問基因組序列文件。作品發表在生信頂刊上,必須強行安利一波。師兄任職於成都大學,專注於生物信息學研究,是真正的Too maker。
  • Python使用ctypes模塊調用DLL函數之複數數組的參數傳遞
    在Python語言中,可以使用ctypes模塊調用其它如C++語言編寫的動態連結庫DLL文件中的函數,前面多篇文章中已經講了傳遞數值/指針/字符串參數、傳遞結構體參數、傳遞普通數組類型的例子,大家可以回看一下,這樣可以更好的理解本次要講的內容。
  • Python基礎教程(一) - 快速入門
    /usr/bin/python為Linux系統下Python解釋器的路徑,通常python解釋器的路徑安裝在/usr/local/bin或/usr/bin目錄下。上面的代碼適用於文件大小適中的文件。對於很大的文件來說,上面的代碼會佔太多的內存,這時你最好一次讀一行。函數定義一個函數的語法由def關鍵字及緊隨其後的函數名,在加上函數的幾個參數組成。
  • Python使用ctypes模塊調用DLL函數之C語言數組與numpy數組傳遞
    在Python語言中,可以使用ctypes模塊調用其它如C++語言編寫的動態連結庫DLL文件中的函數,在提高軟體運行效率的同時,也可以充分利用目前市面上各種第三方的DLL庫函數,以擴充Python軟體的功能及應用領域,減少重複編寫代碼、重複造輪子的工作量,這也充分體現了Python語言作為一種膠水語言所特有的優勢
  • Python的武器庫04:numpy模塊(上)
    說到程式語言python,有一個著名的格言"餘生太短,只用python"。如果要分析為什麼會存在這麼一句格言?python的語法並不簡單,有複雜難懂的部分,之所以又這樣一句格言,是因為python中有很多強大的模塊,就像一個武器庫。Python正式由於這些模塊的出現,只要引入這個模塊,調用這個模塊的集成函數,問題迎刃而解;不需要從頭開始,節省了大量的時間。
  • python基礎系列|示例講解時間模塊datetime
    Python 有很多種方式處理日期和時間,常見的時間處理的模塊是datetime、time、calendar。能融匯貫通的了解和使用這三個模塊,才能輕而易舉地用python處理時間。本文以此為目的,通過講述各個時間模塊的概述、函數及相關知識細節、以及相應的示例來講透它們的使用方式。
  • Python零基礎入門教程,如何使用函數?
    大綱函數語法格式及調用參數:默認值、元組和字典可變參數的使用全局變量和局部變量作用域,局部變量如何升級為全局變量函數是可重複使用的,實現單一功能的代碼塊。可以把項目中某一功能想像成積木模型,函數是組成模型的大大小小積木塊。
  • Python視頻教程網課編程零基礎入門數據分析網絡爬蟲全套Python...
    教程大合集,包含python所有就業方向,每套課程均來自市面上主流培訓機構的原版教程,價值都在數百元以上 每套課程均包含:視頻課程+課件+原始碼 重要:建議根據自己工作方向和需求,重點選擇2到3套課程學精,吃透,然後在工作 重要:零基礎小白建議先選擇零基礎全能篇的一套課程學精,然後再根據自 己的需求和規劃選擇學習其他方向課程,學完後一定要多實踐
  • 代碼詳解:Python虛擬環境的原理及使用
    全文共5308字,預計學習時長20分鐘或更長依附之門:「放棄進入這裡的所有希望。」插圖:Gustave DoréPython的虛擬環境極大地方便了人們的生活。本指南先介紹虛擬環境的基礎知識以及使用方法,然後再深入介紹虛擬環境背後的工作原理。
  • 乾貨丨Python接口測試自動化實戰及代碼示例:含get、post等方法
    最終選定 python 作為腳本開發語言,使用其自帶的 requests 和 urllib 模塊進行接口請求,使用優化後的 unittest 測試框架編寫測試接口函數,測試結果選用 HTMLTestRunner 框架予以展示,並使用 python 的 ssl 模塊支持 https 協議的驗證。接下來,我詳細地介紹這些模塊,並給出各個模塊完整的測試代碼。
  • Python模塊NumPy,Pandas,matplotlib的中文文檔
    今天比較忙所以不能寫長文了作為一名數據工程師需要熟練掌握python中的這些numpy,matplotlib,pandas,sklearn,seaborn,statsmodel.模塊但是由於這些模塊的文檔都是英文的可能一些英文不好的同學學起來會比較的困難,所以我從網上給大家找到一些中文的文檔