1. 程式人生 > >聰哥哥教你學Python之模組

聰哥哥教你學Python之模組

聰哥哥本次主要圍繞使用模組和如何安裝第三方模組等兩個話題談論。

不過在此之前,需要普及一下模組的相關概念知識。

那麼什麼是模組?

引用百度百科上說的:

模組 是一個設計術語,是指對詞條中部分內容進行格式化整理的模板。例如歌手類詞條中的“音樂作品”模組,電視劇類詞條的“分集劇情”模組。在程式設計中,為完成某一功能所需的一段程式或子程式;或指能由編譯程式、裝配程式等處理的獨立程式單位;或指大型軟體系統的一部分。

模組,又稱構件,是能夠單獨命名並獨立地完成一定功能的程式語句的集合(即程式程式碼和資料結構的集合體)。它具有兩個基本的特徵:外部特徵和內部特徵。外部特徵是指模組跟外部環境聯絡的介面(即其他模組或程式呼叫該模組的方式,包括有輸入輸出引數、引用的

全域性變數)和模組的功能;內部特徵是指模組的內部環境具有的特點(即該模組的區域性資料和程式程式碼)。

模組有各種型別,如單元操作模組(換熱器精餾塔壓縮機等)、計算方法模組(加速收斂演算法、最優化演算法等)、物理化學性質模組(汽液相平衡計算、熱焓計算等)等。

 

引用廖雪峰先生說的:

在計算機程式的開發過程中,隨著程式程式碼越寫越多,在一個檔案裡程式碼就會越來越長,越來越不容易維護。

為了編寫可維護的程式碼,我們把很多函式分組,分別放到不同的檔案裡,這樣,每個檔案包含的程式碼就相對較少,很多程式語言都採用這種組織程式碼的方式。在Python中,一個.py檔案就稱之為一個模組(Module)。

 

那麼使用模組又什麼好處呢?

最大的好處是大大提高了程式碼的可維護性。其次,編寫程式碼不必從零開始。當一個模組編寫完畢,就可以被其他地方引用。我們在編寫程式的時候,也經常引用其他模組,包括Python內建的模組和來自第三方的模組。

使用模組還可以避免函式名和變數名衝突。相同名字的函式和變數完全可以分別存在不同的模組中,因此,我們自己在編寫模組時,不必考慮名字會與其他模組衝突。但是也要注意,儘量不要與內建函式名字衝突。點這裡檢視Python的所有內建函式。

你也許還想到,如果不同的人編寫的模組名相同怎麼辦?為了避免模組名衝突,Python又引入了按目錄來組織模組的方法,稱為包(Package)

 

聰哥哥有話說:

模組是一組Python程式碼的集合,可以使用其他模組,也可以被其他模組使用。

建立自己的模組時,要注意:

  • 模組名要遵循Python變數命名規範,不要使用中文、特殊字元;
  • 模組名不要和系統模組名衝突,最好先檢視系統是否已存在該模組,檢查方法是在Python互動環境執行import abc,若成功則說明系統存在此模組。

另外在補充一點:

這個模組的思想與當初聰哥哥做某個專案的架構設計,有一致的相同處。這裡不會詳說。後續聰哥哥會出相關係列的文章講解。

 

一、使用模組
Python本身就內建了很多非常有用的模組,只要安裝完畢,這些模組就可以立刻使用。

示例十一(學任何程式語言或者程式語言相關的中介軟體或框架,必經之路,“Hello Wordl”,在此也不例外):

# -*- coding: utf-8 -*-

' a test module '

__author__ = 'Michael Liao'

import sys

def test():
    args = sys.argv
    if len(args)==1:
        print('Hello, world!')
    elif len(args)==2:
        print('Hello, %s!' % args[1])
    else:
        print('Too many arguments!')

if __name__=='__main__':
    test()

 

關於作用域:

在一個模組中,我們可能會定義很多函式和變數,但有的函式和變數我們希望給別人使用,有的函式和變數我們希望僅僅在模組內部使用。在Python中,是通過_字首來實現的。

正常的函式和變數名是公開的(public),可以被直接引用,比如:abcx123PI等;

類似__xxx__這樣的變數是特殊變數,可以被直接引用,但是有特殊用途,比如上面的__author____name__就是特殊變數,hello模組定義的文件註釋也可以用特殊變數__doc__訪問,我們自己的變數一般不要用這種變數名;

類似_xxx__xxx這樣的函式或變數就是非公開的(private),不應該被直接引用,比如_abc__abc等;

之所以我們說,private函式和變數“不應該”被直接引用,而不是“不能”被直接引用,是因為Python並沒有一種方法可以完全限制訪問private函式或變數,但是,從程式設計習慣上不應該引用private函式或變數。

二、安裝模組

在Python中,安裝第三方模組,是通過包管理工具pip完成的。

比如:

在node.js中有的時候需要安裝比如Express框架,就需要npm這個安裝包管理工具。

在Java中比如使用多模組來開發專案,有些時候得mvn install對應的java專案,不然的話有些專案需要引用這個就會報錯。

這裡的pip來安裝依賴,你也可以理解為npm。其實它們有很多共同點。

一般什麼時候需要安裝模組,也就是你要使用這個模組時,那麼什麼時候你怎麼才能知道你要使用這個模組。

聰哥哥給你一句話,等控制檯報錯,報錯資訊為沒有這個模組時,也就像提醒你要安裝這個模組。哈哈

小結:

感謝很多Python開源開發者們,將自己的優秀成果貢獻出來,正是因為你們,開源的世界才能百花齊放。