python標準庫00 學習準備

Python標準庫----蜻蜓點水

python有一套頗有用的標準庫。標準庫會隨着python解釋器一塊兒安裝在你的電腦上的.它是python的一個組成部分.這些標準庫是python爲你準備的利器,可讓編程事半功倍.javascript

這裏暫且將學習標準庫的三個方面的庫:php

  • python加強
  • 系統互動
  • 網絡

第一類:python加強css


python自身的已有的一些功能能夠隨着標準庫的使用而獲得加強。html

(1)  文字處理

Python的string類提供了對字符串進行處理的方法。更進一步,經過標準庫中的re包,Python能夠用正則表達式(regular expression)來處理字符串。正則表達式是一個字符串模板。Python能夠從字符中搜查符合該模板的部分,或者對這一部分替換成其它內容。好比你能夠搜索一個文本中全部的數字。正則表達式的關鍵在於根據本身的須要構成模板。此外,Python標準庫還爲字符串的輸出提供更加豐富的格式, 好比: string包,textwrap包。java

(2)  數據對象

不一樣的數據對象,適用於不一樣場合的對數據的組織和管理。Python的標準庫定義了表和詞典以外的數據對象,好比說數組(array),隊列(Queue)。一個熟悉數據結構(data structure)的Python用戶能夠在這些包中找到本身須要的數據結構。此外,咱們也會常用copy包,以複製對象。python

(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格式的文件也有相應的處理包。算法

第二類:系統互動sql


系統互動,主要指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基礎庫。

相關文章
相關標籤/搜索