Python學習目錄
- 在Mac下使用Python3
- Python學習之資料型別
- Python學習之函式
- Python學習之高階特性
- Python學習之函數語言程式設計
- Python學習之模組
- Python學習之物件導向程式設計
- Python學習之物件導向高階程式設計
- Python學習之錯誤除錯和測試
- Python學習之IO程式設計
- Python學習之程式和執行緒
- Python學習之正則
- Python學習之常用模組
- 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),可以被直接引用,比如:abc
,x123
,PI
等;
類似__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,就相當於把數十個第三方模組自動安裝好了,非常簡單易用。