python標準庫00學習準備
Python標準庫—-走馬觀花
python有一套很有用的標準庫。標準庫會隨著python直譯器一起安裝在你的電腦上的.它是python的一個組成部分.這些標準庫是python為你準備的利器,可以讓程式設計事半功倍.
這裡暫且將學習標準庫的三個方面的庫:
- python增強
- 系統互動
- 網路
第一類:python增強
python自身的已有的一些功能可以隨著標準庫的使用而得到增強。
(1) 文書處理
Python的string類提供了對字串進行處理的方法。更進一步,通過標準庫中的re包,Python可以用正規表示式(regular expression)來處理字串。正規表示式是一個字串模板。Python可以從字元中搜查符合該模板的部分,或者對這一部分替換成其它內容。比如你可以搜尋一個文字中所有的數字。正規表示式的關鍵在於根據自己的需要構成模板。此外,Python標準庫還為字串的輸出提供更加豐富的格式, 比如: string包,textwrap包。
(2) 資料物件
不同的資料物件,適用於不同場合的對資料的組織和管理。Python的標準庫定義了表和詞典之外的資料物件,比如說陣列(array),佇列(Queue)。一個熟悉資料結構(data structure)的Python使用者可以在這些包中找到自己需要的資料結構。此外,我們也會經常使用copy包,以複製物件。
(3) 日期和時間
日期和時間的管理並不複雜,但容易犯錯。Python的標準庫中對日期和時間的管理頗為完善(利用time包管理時間,利用datetime包管理日期和時間),你不僅可以進行日期時間的查詢和變換(比如:2012年7月18日對應的是星期幾),還可以對日期時間進行運算(比如2000.1.1 13:00的378小時之後是什麼日期,什麼時間)。通過這些標準庫,還可以根據需要控制日期時間輸出的文字格式(比如:輸出’2012-7-18‘還是`18 Jul 2012`)
(4) 數學運算
標準庫中,Python定義了一些新的數字型別(decimal包, fractions包), 以彌補之前的數字型別(integer, float)可能的不足。標準庫還包含了random包,用於處理隨機數相關的功能(產生隨機數,隨機取樣等)。math包補充了一些重要的數學常數和數學函式,比如pi,三角函式等等。(儘管numpy並不是標準庫中的包,但它的陣列運算的良好支援,讓它在基於Python的科研和計算方面得到相當廣泛的應用,可以適當關注。)
(5) 儲存
實際上,Python可以輸入或輸出任意的物件。這些物件可以通過標準庫中的pickle包轉換成為二進位制格式(binary),然後儲存於檔案之中,也可以反向從二進位制檔案中讀取物件。此外,標準庫中還支援基本的資料庫功能(sqlite3包)。XML和csv格式的檔案也有相應的處理包。
第二類:系統互動
系統互動,主要指Python和作業系統(operate system)、檔案系統(file system)的互動。Python可以實現一個作業系統的許多功能。它能夠像bash指令碼那樣管理作業系統,這也是Python有時被成為指令碼語言的原因。
1) Python執行控制
sys包被用於管理Python自身的執行環境。Python是一個直譯器(interpreter), 也是一個執行在作業系統上的程式。我們可以用sys包來控制這一程式執行的許多引數,比如說Python執行所能佔據的記憶體和CPU, Python所要掃描的路徑等。另一個重要功能是和Python自己的命令列互動,從命令列讀取命令和引數。
2) 作業系統
如果說Python構成了一個小的世界,那麼作業系統就是包圍這個小世界的大世界。Python與作業系統的互動可以讓Python在自己的小世界裡管理整個大世界。
os包是Python與作業系統的介面。我們可以用os包來實現作業系統的許多功能,比如管理系統程式,改變當前路徑(相當於’cd‘),改變檔案許可權等,建立。但要注意,os包是建立在作業系統的平臺上的,許多功能在Windows系統上是無法實現的。另外,在使用os包中,要注意其中的有些功能已經被其他的包取代。
我們通過檔案系統來管理磁碟上儲存的檔案。查詢、刪除,複製檔案,以及列出檔案列表等都是常見的檔案操作。這些功能經常可以在作業系統中看到(比如ls, mv, cp等Linux命令),但現在可以通過Python標準庫中的glob包、shutil包、os.path包、以及os包的一些函式等,在Python內部實現。
subprocess包被用於執行外部命令,其功能相當於我們在作業系統的命令列中輸入命令以執行,比如常見的系統命令`ls`或者`cd`,還可以是任意可以在命令列中執行的程式。
4) 執行緒與程式
Python支援多執行緒(threading包)執行和多程式(multiprocessing包)執行。通過多執行緒和多程式,可以提高系統資源的利用率,提高計算機的處理速度。Python在這些包中,附帶有相關的通訊和記憶體管理工具。此外,Python還支援類似於UNIX的signal系統,以實現程式之間的粗糙的訊號通訊。
第三類:網路
現在,網路功能的強弱很大程度上決定了一個語言的成功與否。從Ruby, JavaScript, php身上都可以感受到這一點。Python的標準庫對網際網路開發的支援並不充分,這也是Django等基於Python的專案的出發點: 增強Python在網路方面的應用功能。這些專案取得了很大的成功,也是許多人願意來學習Python的一大原因。但應注意到,這些基於Python的專案也是建立在Python標準庫的基礎上的。
1) 基於socket層的網路應用
socket是網路可程式設計部分的底層。通過socket包,我們可以直接管理socket,比如說將socket賦予給某個埠(port),連線遠端埠,以及通過連線傳輸資料。我們也可以利用SocketServer包更方便地建立伺服器。
通過與多執行緒和多程式配合,建立多執行緒或者多程式的伺服器,可以有效提高伺服器的工作能力。此外,通過asyncore包實現非同步處理,也是改善伺服器效能的一個方案。
2) 網際網路應用
在實際應用中,網路的很多底層細節(比如socket)都是被高層的協議隱藏起來的。建立在socket之上的http協議實際上更容易也更經常被使用。http通過request/responce的模式建立連線並進行通訊,其資訊內容也更容易理解。Python標準庫中有http的伺服器端和客戶端的應用支援(BaseHTTPServer包; urllib包, urllib2包), 並且可以通過urlparse包對URL(URL實際上說明了網路資源所在的位置)進行理解和操作。
Python標準庫—-學習準備
Python標準庫是Python強大的動力所在,由於標準庫所涉及的應用很廣,所以需要學習一定的背景知識。
硬體原理
這一部份需要了解記憶體,CPU,磁碟儲存以及IO的功能和效能,瞭解計算機工作的流程,瞭解指令的概念。這些內容基礎而重要。
Python標準庫的一部份是為了提高系統的效能(比如mmap),所以有必要了解基本的計算機各個組成部分的效能。
作業系統
在瞭解作業系統時,下面是重點:
1) 作業系統的程式管理,比如什麼是UID, PID, daemon
2) 程式之間的訊號通訊,比如使用kill傳遞訊號的方式
學習程式相關的內容,是為了方便於學習os包,thread包,multiprocessing包,signal包
3) 檔案管理,檔案的幾種型別。
4) 檔案讀寫(IO)介面
5) 檔案的許可權以及其它的檔案資訊(meta data)
6) 常用系統命令以及應用,比如ls, mv, rm, mkdir, chmod, zip, tar…,
學習檔案相關的內容,,是為了學習os包, shutil包中檔案管理相關的部分。學習檔案介面對於文字輸入輸出的理解很重要,也會影響到對於socket包, select包概念的理解。此外,python中的歸檔(archive)和壓縮(compress)功能也和作業系統中的類似。
7) Linux shell,比如說file name matching,對於理解glob包等有幫助。如果你對Linux的正則表達(regular expression)有了解的話,python的正則表達的學習會變得比較容易。學習Linux命令列中的引數傳遞對於理解python標準庫中解析命令列的包也是有用的。
網路
Python的一大應用是在網路方面。但Python和標準庫只是提供了介面,並不涉及底層。網路知識可以大大降低學習曲線的陡度。
1) TCP/IP的基礎的分層架構。這方面的內容太廣博了,所以可以有選擇地瞭解骨幹知識。
2) 常用的應用層協議,比如http, 以及郵件相關的協議,特別是它們的工作過程。
3) 根據需要,瞭解html/css/javascript/jQuery/frame等
如果想利用python建伺服器,比如在google app engine上,這些知識是需要的。
演算法與資料結構
標準庫中定義有一些資料物件的封裝。因此,你並不需要重頭編寫它們。相關資料結構的應用需要一些資料結構的知識,比如佇列,樹等。
標準庫中已經實現了許多演算法,比如排序等,可以方便的呼叫。演算法的基礎知識可以幫助你做決定。
資料庫
Python中內建了sqlite3。如果你只需要一個簡單的資料庫,可以直接從標準庫中呼叫sqlite3。
當使用Python中資料庫相關的包時(比如sqlite3),需要對資料庫,特別是關係型資料庫,有一個基本瞭解。
加密和文字編碼
Python的加密演算法同樣基於一些經典加密演算法,比如MD5,RSA演算法。加密的基本知識將很有幫助。
使用非ASCII編碼,比如中文時,文字編碼的知識很重要。
總結
Python基本的物件概念和動態型別概念。可以參照快速教程,並嘗試閱讀更多的資料和原始碼,來加深對概念的理解。Python標準庫學習的難度在於背景知識。一個瞭解相關背景知識(或者其它語言的庫)的程式設計師,可以在很短的時間內掌握Python基礎庫。
相關文章
- Python 快速教程(標準庫):學習準備Python
- python標準庫SocketServer學習PythonServer
- C標準庫學習
- Golang標準庫學習—container/heapGolangAI
- python常用標準庫Python
- Go Web學習 -標準庫 net/http 使用GoWebHTTP
- Go語言學習(1)——標準庫fmtGo
- go標準庫-log包原始碼學習Go原始碼
- python標準庫目錄Python
- Python標準庫(待續)Python
- Python標準庫一覽Python
- 準備Python環境學習OpenCV的使用PythonOpenCV
- C++學習筆記 — STL標準模板庫C++筆記
- 【python】Python標準庫defaultdict模組Python
- Python標準庫06 子程式Python
- Python標準庫(1) — Itertools模組Python
- 零基礎學習 Python 之前期準備Python
- Go Web學習(1)——標準庫http實現serverGoWebHTTPServer
- C++入門學習——標準模板庫之vectorC++
- C 標準庫 -
- C++標準庫、C++標準模版庫介紹C++
- Openfire安裝準備-MySQL資料庫準備MySql資料庫
- python標準庫模組放在哪裡?Python
- python官方標準庫(中文版)Python
- Python 2.* 標準庫簡介Python
- Python標準庫系列之Memcache模組Python
- python:模組1——標準庫簡介Python
- Python標準庫之functools/itertools/operatorPython
- Python標準庫系列之Redis模組PythonRedis
- 《C++ Primer》學習筆記(八):標準 IO 庫C++筆記
- 準備學習J2ME-Polish
- 學習程式設計前的準備程式設計
- 學習Linux要有哪些心理準備?Linux
- 為Apache Spark準備的深度學習ApacheSpark深度學習
- C++標準庫C++
- 標準庫之template
- 深度學習煉丹-資料標準化深度學習
- 從零開始學Python:第22課-Python標準庫初探Python