首頁>技術>

Python 為何那麼多人都喜歡,就是因為很多大佬給我們造好了“輪子”了,拿著大佬的輪子,我驕傲~

Python 模組的設計與應用

模組是一個概念,它包含 1~N 個檔案,如果檔案是 Python 程式碼檔案(就是.py 結尾的檔案),那每個檔案中可以包含函式,類等內容。

在公司工作,很多專案都是協作開發來完成,一個專案後面可能存在很多工程師,為了開發方便,每個人負責的功能函式或者類都儘量封裝在一個模組中,模組英文請記住 module,有的地方叫做 庫,也有的地方叫做 包(package),對於現階段的你來說,當成一樣的內容就好。

網際網路上存在大量的開源模組,這些模組最大的優勢就是免費,很多時候使用這些模組能極大地提高編碼效率,這也是很多人喜歡 Python 的原因之一。

1 將函式放到模組中

模組學習的過程,不能按照語法結構來學習,它是一種抽象的知識,是一種程式碼的設計方式。例如將寫好的函式放到模組中。

# 宣告一個宮保雞丁的函式def kung_pao_chicken(*ingredients):    """    這個函式用於輸出宮保雞丁的主料    """    print("宮保雞丁的主料有:")    for item in ingredients:        print(item)# 宣告一個魚香肉絲的函式def yu_shiang_shredded_pork(**args):    """    這個函式目的獲取使用者輸入進來的引數    """    print("魚香肉絲需要啥")    for item in args.items():        print(item)

以上內容聲明瞭兩個函式,當然函式名你必須好評,翻譯的準確有意義。

接下來就將上面的函式整合到一個模組中去,建立一個新的檔案 stir_fry.py 然後將兩個函式複製到新的檔案中。

stir_fry.py 檔案包含那兩個函式

好了,完成任務,一個模組建立完畢了,這個 stir_fry.py 檔案就是一個模組。

你現在腦中肯定出現黑人問號臉了,What?這就完了。是的,完了,一個低配模組完成。

下面就可以拿著這個模組給別人使用去了。會寫模組成為大佬之後,就可以給新入行的菜鳥指點江山,寫模組了。

2 應用函式模組2.1 import 匯入模組

在另一個檔案中,可以透過 import 模組名 匯入一個模組,例如匯入剛才建立的 stir_fry 模組。

注意要新建一個檔案,檔名隨意但是不要與模組同名。

import stir_fry # 注意匯入模組不能帶中劃線,所以模組的檔名也不能帶下劃線。

如果想要使用模組中的函式,只需要參考下述語法格式即可。

模組名.函式名稱()

透過 stir_fry 呼叫模組中的函式。

import stir_frystir_fry.kung_pao_chicken("黃瓜", "胡蘿蔔", "雞胸肉", "花生米")stir_fry.yu_shiang_shredded_pork(old="橡皮擦的魚香肉絲放魚", new="大佬的魚香肉絲不放魚")

當透過 import stir_fry 匯入模組之後,該模組內的所有函式都一次性匯入到新檔案中了。

2.2 匯入模組某個函式

如果不想匯入模組的所有函式,而只匯入某個函式,使用一下語法可以解決該問題。

from 模組名 import 函式名

修改上一節案例:

from stir_fry import kung_pao_chickenkung_pao_chicken("黃瓜", "胡蘿蔔", "雞胸肉", "花生米")# 下面的函式無法呼叫,因為未匯入yu_shiang_shredded_pork(old="橡皮擦的魚香肉絲放魚", new="大佬的魚香肉絲不放魚")

直接匯入模組中的函式,使用時不需要透過 模組名. 的方式呼叫,直接書寫函式名即可。

匯入模組中多個函式

語法格式如下:

from 模組名 import 函式名1,函式名2,...

匯入模組所有函式

語法格式如下:

from 模組名 import *
2.3 as 別名

剛才透過模組匯入函式你應該發現一個潛在的問題,就是函式名稱太長怎麼辦,除了名稱太長,還存在一種情況,模組中的函式名稱與當前檔案中函式的名稱,存在重名的風險。此時可以學習一個新的內容,透過 as 給模組匯入進來的函式起個別名,然後在該檔案都使用別名進行編碼。

語法格式如下:

from 模組名 import 函式名 as 別名

上述內容應用到案例中如下述程式碼:

from stir_fry import kung_pao_chicken as paopao("黃瓜", "胡蘿蔔", "雞胸肉", "花生米")

as 別名也可直接作用於模組,語法格式如下:

import 模組名 as 別名
11.3 將類放到模組中

隨著程式設計變得越來越複雜,只把函式放到模組中已經不能滿足要求了,需要將更高階的內容放到模組中,也就是類。

首先在 dog_module.py 檔案中定義一個類。

class Dog():    def __init__(self):        self.name = "小狗"    def say(self):        print("汪汪汪")

此時的 dog_module 就是模組的名稱,而在該模組中只有一個類 Dog,也可以在該模組中多建立幾個類,例如:

class Dog():    def __init__(self):        self.name = "小狗"    def say(self):        print("汪汪汪")class Cat():    def __init__(self):        self.name = "小貓"    def say(self):        print("喵喵喵~")
3.1 import 匯入模組(類)

與匯入模組的函式部分知識一樣,如果希望匯入一個模組中的類,可以直接透過下述語法格式實現:

import 模組名

使用模組中的類,語法格式如下:

模組名.類名

具體程式碼不再演示,自行完成吧。

3.1 匯入模組某個類

匯入模組的類和匯入模組的的函式用法是一致的。

新建一個 demo.py 檔案,在該檔案匯入 dog_module 模組中的類。

# 匯入 dog_module 模組中的狗類from dog_module import Dogdog = Dog()dog.say()

從模組中匯入多個類

該方式與函式的匯入也一致,語法格式如下:

from 模組名 import 類名1,類名2,類名3...複製程式碼

匯入模組中所有類

from 模組名 import *

學到這裡,你應該已經發現匯入模組中的函式與匯入模組中的類,從程式碼編寫的角度幾乎看不出區別,對比著學習即可。

匯入類的時候也可以應用別名,同樣使用 as 語法。

4 常見模組

學習到這裡你對模組是什麼,模組怎麼用已經有了一個基本認知,接下來先不用自己寫一個特別牛的模組,我們先把一些常見的模組應用起來。

4.1 隨機數 random 模組

透過隨機數模組可以獲取到一個數字,它的使用場景非常廣,例如遊戲相關開發、驗證碼相關、抽獎相關,學習了隨機數之後可以完成一些非常不錯的小案例。

randint 方法

匯入隨機數模組之後,可以透過 randint 方法隨機生成一個整數,例如下述程式碼:

import random # 匯入隨機數模組num = random.randint(1,10)print(num)

反覆執行程式碼會得到一個 1~10 之間的數字,由此可以 randint 方法中的引數含義。

randint(min,max) # min 最小值,max 最大值

你可以嘗試給 randint 函式起一個別名嗎?

choice 方法

透過 choice 方法可以配合列表實現一些效果,choice 可以隨機返回列表中的一個元素。

import random  # 匯入隨機數模組play = random.choice(["足球", "籃球", "乒乓球", "棒球"])print(play)

如果你想知道 choice 方法的具體用法,還記得怎麼查詢嗎?

import random  # 匯入隨機數模組print(help(random.choice))

shuffle 方法

該方法可以將一個列表的順序打亂。

import random  # 匯入隨機數模組my_list = ["足球", "籃球", "乒乓球", "棒球"]random.shuffle(my_list)print(my_list)

簡單挑選了 random 模組中的三個方法做為說明,對於模組的學習,後面將為每個模組單開一篇文章書寫。

4.2 時間 time 模組

時間模組是 Python 中非常重要的一個內建模組,很多場景都離不開它,內建模組就是 Python 安裝好之後自帶的模組。

time 方法 time 模組主要用於操作時間,該方法中存在一個 time 物件,使用 time 方法之後,可以獲取從 1970年1月1日 00:00:00 到現在的秒數,很多地方會稱作時間戳。

import timeprint(time.time())

輸出內容:

1606810686.3747146

sleep 方法 該方法可以讓程式暫停,該方法的引數是的單位是

使用語法格式為:

import timetime.sleep(10) # 程式暫停 10 秒再執行

asctime 與 localtime 方法

以上兩個方法都可以返回當前系統時間,只是展示的形式不同。

import timeprint(time.asctime())print(time.localtime())

time 模組涉及的方法先只涉及這麼多,後續滾雪球學習過程中在繼續補充。

Python 還內建了很多模組,例如 sys 模組、os 模組、json 模組、pickle 模組、shelve 模組、xml 模組、re 模組、logging 模組等等內容,後續都將逐步學習到,有可能需要分開專題給大家講解。

5 總結

Python 模組,快速編碼的一種途徑,很多時候第三方模組可以幫你解決大多數常見編碼場景,讓你在編碼的道路上飛奔。

21
最新評論
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • Java資料型別系列之Arrays工具類