Python學習之模組

stonezhu發表於2018-06-16

Python學習目錄

  1. 在Mac下使用Python3
  2. Python學習之資料型別
  3. Python學習之函式
  4. Python學習之高階特性
  5. Python學習之函數語言程式設計
  6. Python學習之模組
  7. Python學習之物件導向程式設計
  8. Python學習之物件導向高階程式設計
  9. Python學習之錯誤除錯和測試
  10. Python學習之IO程式設計
  11. Python學習之程式和執行緒
  12. Python學習之正則
  13. Python學習之常用模組
  14. Python學習之網路程式設計

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

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

為了避免模組名衝突,Python又引入了按目錄來組織模組的方法,稱為包(Package)。

請注意,每一個包目錄下面都會有一個__init__.py的檔案,這個檔案是必須存在的,否則,Python就把這個目錄當成普通目錄,而不是一個包。__init__.py可以是空檔案,也可以有Python程式碼,因為__init__.py本身就是一個模組。

使用模組

概述

#!/usr/bin/env python3# -*- coding: utf-8 -*-' a test module '__author__ = 'Michael Liao'import sysdef 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()複製程式碼

第1行和第2行是標準註釋,第1行註釋可以讓這個hello.py檔案直接在Unix/Linux/Mac上執行,第2行註釋表示.py檔案本身使用標準UTF-8編碼;

第4行是一個字串,表示模組的文件註釋,任何模組程式碼的第一個字串都被視為模組的文件註釋;

第6行使用__author__變數是指作者。

以上就是Python模組的標準檔案模板。

有個注意點:當我們執行當前模組檔案時,Python直譯器把一個特殊變數__name__置為__main__

作用域

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

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

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

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

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

安裝第三方模組

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

一般來說,第三方庫都會在Python官方的pypi.python.org網站註冊,要安裝一個第三方庫,必須先知道該庫的名稱,可以在官網或者pypi上搜尋,比如Pillow的名稱叫Pillow,因此,安裝Pillow的命令就是:

pip install Pillow複製程式碼

注:在使用Python時,我們經常需要用到很多第三方庫,例如,上面提到的Pillow,以及MySQL驅動程式,Web框架Flask,科學計算Numpy等。用pip一個一個安裝費時費力,還需要考慮相容性。我們推薦直接使用Anaconda,這是一個基於Python的資料處理和科學計算平臺,它已經內建了許多非常有用的第三方庫,我們裝上Anaconda,就相當於把數十個第三方模組自動安裝好了,非常簡單易用。

下一篇:Python學習之物件導向程式設計

來源:https://juejin.im/post/5b24647a51882574b158852a

相關文章