
Python標(biāo)準(zhǔn)庫—走馬觀花
Python有一套很有用的標(biāo)準(zhǔn)庫(standard library)。標(biāo)準(zhǔn)庫會(huì)隨著Python解釋器,一起安裝在你的電腦中的。它是Python的一個(gè)組成部分。這些標(biāo)準(zhǔn)庫是Python為你準(zhǔn)備好的利器,可以讓編程事半功倍。
我將根據(jù)我個(gè)人的使用經(jīng)驗(yàn)中,挑選出標(biāo)準(zhǔn)庫三個(gè)方面的包(package)介紹:
Python增強(qiáng)
系統(tǒng)互動(dòng)
網(wǎng)絡(luò)
第一類:Python增強(qiáng)
Python自身的已有的一些功能可以隨著標(biāo)準(zhǔn)庫的使用而得到增強(qiáng)。
1) 文字處理
Python的string類提供了對(duì)字符串進(jìn)行處理的方法。更進(jìn)一步,通過標(biāo)準(zhǔn)庫中的re包,Python可以用正則表達(dá)式(regular expression)來處理字符串。
正則表達(dá)式是一個(gè)字符串模板。Python可以從字符中搜查符合該模板的部分,或者對(duì)這一部分替換成其它內(nèi)容。比如你可以搜索一個(gè)文本中所有的數(shù)字。正則表達(dá)式的關(guān)鍵在于根據(jù)自己的需要構(gòu)成模板。
此外,Python標(biāo)準(zhǔn)庫還為字符串的輸出提供更加豐富的格式, 比如: string包,textwrap包。
2) 數(shù)據(jù)對(duì)象
不同的數(shù)據(jù)對(duì)象,適用于不同場合的對(duì)數(shù)據(jù)的組織和管理。Python的標(biāo)準(zhǔn)庫定義了表和詞典之外的數(shù)據(jù)對(duì)象,比如說數(shù)組(array),隊(duì)列(Queue)。一個(gè)熟悉數(shù)據(jù)結(jié)構(gòu)(data structure)的Python用戶可以在這些包中找到自己需要的數(shù)據(jù)結(jié)構(gòu)。
此外,我們也會(huì)經(jīng)常使用copy包,以復(fù)制對(duì)象。
3) 日期和時(shí)間
日期和時(shí)間的管理并不復(fù)雜,但容易犯錯(cuò)。Python的標(biāo)準(zhǔn)庫中對(duì)日期和時(shí)間的管理頗為完善(利用time包管理時(shí)間,利用datetime包管理日期和時(shí)間),你不僅可以進(jìn)行日期時(shí)間的查詢和變換(比如:2012年7月18日對(duì)應(yīng)的是星期幾),還可以對(duì)日期時(shí)間進(jìn)行運(yùn)算(比如2000.1.1 13:00的378小時(shí)之后是什么日期,什么時(shí)間)。通過這些標(biāo)準(zhǔn)庫,還可以根據(jù)需要控制日期時(shí)間輸出的文本格式(比如:輸出’2012-7-18‘還是'18 Jul 2012')
4) 數(shù)學(xué)運(yùn)算
標(biāo)準(zhǔn)庫中,Python定義了一些新的數(shù)字類型(decimal包, fractions包), 以彌補(bǔ)之前的數(shù)字類型(integer, float)可能的不足。標(biāo)準(zhǔn)庫還包含了random包,用于處理隨機(jī)數(shù)相關(guān)的功能(產(chǎn)生隨機(jī)數(shù),隨機(jī)取樣等)。math包補(bǔ)充了一些重要的數(shù)學(xué)常數(shù)和數(shù)學(xué)函數(shù),比如pi,三角函數(shù)等等。
(盡管numpy并不是標(biāo)準(zhǔn)庫中的包,但它的數(shù)組運(yùn)算的良好支持,讓它在基于Python的科研和計(jì)算方面得到相當(dāng)廣泛的應(yīng)用,可以適當(dāng)關(guān)注。)
5) 存儲(chǔ)
之前我們的快速教程中,只提及了文本的輸入和輸出。實(shí)際上,Python可以輸入或輸出任意的對(duì)象。這些對(duì)象可以通過標(biāo)準(zhǔn)庫中的pickle包轉(zhuǎn)換成為二進(jìn)制格式(binary),然后存儲(chǔ)于文件之中,也可以反向從二進(jìn)制文件中讀取對(duì)象。
此外,標(biāo)準(zhǔn)庫中還支持基本的數(shù)據(jù)庫功能(sqlite3包)。XML和csv格式的文件也有相應(yīng)的處理包。
第二類:系統(tǒng)互動(dòng)
系統(tǒng)互動(dòng),主要指Python和操作系統(tǒng)(operate system)、文件系統(tǒng)(file system)的互動(dòng)。Python可以實(shí)現(xiàn)一個(gè)操作系統(tǒng)的許多功能。它能夠像bash腳本那樣管理操作系統(tǒng),這也是Python有時(shí)被成為腳本語言的原因。
1) Python運(yùn)行控制
sys包被用于管理Python自身的運(yùn)行環(huán)境。Python是一個(gè)解釋器(interpreter), 也是一個(gè)運(yùn)行在操作系統(tǒng)上的程序。我們可以用sys包來控制這一程序運(yùn)行的許多參數(shù),比如說Python運(yùn)行所能占據(jù)的內(nèi)存和CPU, Python所要掃描的路徑等。另一個(gè)重要功能是和Python自己的命令行互動(dòng),從命令行讀取命令和參數(shù)。
2) 操作系統(tǒng)
如果說Python構(gòu)成了一個(gè)小的世界,那么操作系統(tǒng)就是包圍這個(gè)小世界的大世界。Python與操作系統(tǒng)的互動(dòng)可以讓Python在自己的小世界里管理整個(gè)大世界。
os包是Python與操作系統(tǒng)的接口。我們可以用os包來實(shí)現(xiàn)操作系統(tǒng)的許多功能,比如管理系統(tǒng)進(jìn)程,改變當(dāng)前路徑(相當(dāng)于’cd‘),改變文件權(quán)限等,建立。但要注意,os包是建立在操作系統(tǒng)的平臺(tái)上的,許多功能在Windows系統(tǒng)上是無法實(shí)現(xiàn)的。另外,在使用os包中,要注意其中的有些功能已經(jīng)被其他的包取代。
我們通過文件系統(tǒng)來管理磁盤上儲(chǔ)存的文件。查找、刪除,復(fù)制文件,以及列出文件列表等都是常見的文件操作。這些功能經(jīng)??梢栽诓僮飨到y(tǒng)中看到(比如ls, mv, cp等Linux命令),但現(xiàn)在可以通過Python標(biāo)準(zhǔn)庫中的glob包、shutil包、os.path包、以及os包的一些函數(shù)等,在Python內(nèi)部實(shí)現(xiàn)。
subprocess包被用于執(zhí)行外部命令,其功能相當(dāng)于我們?cè)诓僮飨到y(tǒng)的命令行中輸入命令以執(zhí)行,比如常見的系統(tǒng)命令'ls'或者'cd',還可以是任意可以在命令行中執(zhí)行的程序。
4) 線程與進(jìn)程
Python支持多線程(threading包)運(yùn)行和多進(jìn)程(multiprocessing包)運(yùn)行。通過多線程和多進(jìn)程,可以提高系統(tǒng)資源的利用率,提高計(jì)算機(jī)的處理速度。Python在這些包中,附帶有相關(guān)的通信和內(nèi)存管理工具。此外,Python還支持類似于UNIX的signal系統(tǒng),以實(shí)現(xiàn)進(jìn)程之間的粗糙的信號(hào)通信。
第三類:網(wǎng)絡(luò)
現(xiàn)在,網(wǎng)絡(luò)功能的強(qiáng)弱很大程度上決定了一個(gè)語言的成功與否。從Ruby, JavaScript, php身上都可以感受到這一點(diǎn)。Python的標(biāo)準(zhǔn)庫對(duì)互聯(lián)網(wǎng)開發(fā)的支持并不充分,這也是Django等基于Python的項(xiàng)目的出發(fā)點(diǎn): 增強(qiáng)Python在網(wǎng)絡(luò)方面的應(yīng)用功能。這些項(xiàng)目取得了很大的成功,也是許多人愿意來學(xué)習(xí)Python的一大原因。但應(yīng)注意到,這些基于Python的項(xiàng)目也是建立在Python標(biāo)準(zhǔn)庫的基礎(chǔ)上的。
1) 基于socket層的網(wǎng)絡(luò)應(yīng)用
socket是網(wǎng)絡(luò)可編程部分的底層。通過socket包,我們可以直接管理socket,比如說將socket賦予給某個(gè)端口(port),連接遠(yuǎn)程端口,以及通過連接傳輸數(shù)據(jù)。我們也可以利用SocketServer包更方便地建立服務(wù)器。
通過與多線程和多進(jìn)程配合,建立多線程或者多進(jìn)程的服務(wù)器,可以有效提高服務(wù)器的工作能力。此外,通過asyncore包實(shí)現(xiàn)異步處理,也是改善服務(wù)器性能的一個(gè)方案。
2) 互聯(lián)網(wǎng)應(yīng)用
在實(shí)際應(yīng)用中,網(wǎng)絡(luò)的很多底層細(xì)節(jié)(比如socket)都是被高層的協(xié)議隱藏起來的。建立在socket之上的http協(xié)議實(shí)際上更容易也更經(jīng)常被使用。http通過request/responce的模式建立連接并進(jìn)行通信,其信息內(nèi)容也更容易理解。Python標(biāo)準(zhǔn)庫中有http的服務(wù)器端和客戶端的應(yīng)用支持(BaseHTTPServer包; urllib包, urllib2包), 并且可以通過urlparse包對(duì)URL(URL實(shí)際上說明了網(wǎng)絡(luò)資源所在的位置)進(jìn)行理解和操作。
以上的介紹比較粗糙,只希望能為大家提供一個(gè)了解標(biāo)準(zhǔn)庫的入口。歡迎大家一起分享標(biāo)準(zhǔn)庫的使用經(jīng)驗(yàn)。
數(shù)據(jù)分析咨詢請(qǐng)掃描二維碼
若不方便掃碼,搜微信號(hào):CDAshujufenxi
SQL Server 中 CONVERT 函數(shù)的日期轉(zhuǎn)換:從基礎(chǔ)用法到實(shí)戰(zhàn)優(yōu)化 在 SQL Server 的數(shù)據(jù)處理中,日期格式轉(zhuǎn)換是高頻需求 —— 無論 ...
2025-09-18MySQL 大表拆分與關(guān)聯(lián)查詢效率:打破 “拆分必慢” 的認(rèn)知誤區(qū) 在 MySQL 數(shù)據(jù)庫管理中,“大表” 始終是性能優(yōu)化繞不開的話題。 ...
2025-09-18CDA 數(shù)據(jù)分析師:表結(jié)構(gòu)數(shù)據(jù) “獲取 - 加工 - 使用” 全流程的賦能者 表結(jié)構(gòu)數(shù)據(jù)(如數(shù)據(jù)庫表、Excel 表、CSV 文件)是企業(yè)數(shù)字 ...
2025-09-18DSGE 模型中的 Et:理性預(yù)期算子的內(nèi)涵、作用與應(yīng)用解析 動(dòng)態(tài)隨機(jī)一般均衡(Dynamic Stochastic General Equilibrium, DSGE)模 ...
2025-09-17Python 提取 TIF 中地名的完整指南 一、先明確:TIF 中的地名有哪兩種存在形式? 在開始提取前,需先判斷 TIF 文件的類型 —— ...
2025-09-17CDA 數(shù)據(jù)分析師:解鎖表結(jié)構(gòu)數(shù)據(jù)特征價(jià)值的專業(yè)核心 表結(jié)構(gòu)數(shù)據(jù)(以 “行 - 列” 規(guī)范存儲(chǔ)的結(jié)構(gòu)化數(shù)據(jù),如數(shù)據(jù)庫表、Excel 表、 ...
2025-09-17Excel 導(dǎo)入數(shù)據(jù)含缺失值?詳解 dropna 函數(shù)的功能與實(shí)戰(zhàn)應(yīng)用 在用 Python(如 pandas 庫)處理 Excel 數(shù)據(jù)時(shí),“缺失值” 是高頻 ...
2025-09-16深入解析卡方檢驗(yàn)與 t 檢驗(yàn):差異、適用場景與實(shí)踐應(yīng)用 在數(shù)據(jù)分析與統(tǒng)計(jì)學(xué)領(lǐng)域,假設(shè)檢驗(yàn)是驗(yàn)證研究假設(shè)、判斷數(shù)據(jù)差異是否 “ ...
2025-09-16CDA 數(shù)據(jù)分析師:掌控表格結(jié)構(gòu)數(shù)據(jù)全功能周期的專業(yè)操盤手 表格結(jié)構(gòu)數(shù)據(jù)(以 “行 - 列” 存儲(chǔ)的結(jié)構(gòu)化數(shù)據(jù),如 Excel 表、數(shù)據(jù) ...
2025-09-16MySQL 執(zhí)行計(jì)劃中 rows 數(shù)量的準(zhǔn)確性解析:原理、影響因素與優(yōu)化 在 MySQL SQL 調(diào)優(yōu)中,EXPLAIN執(zhí)行計(jì)劃是核心工具,而其中的row ...
2025-09-15解析 Python 中 Response 對(duì)象的 text 與 content:區(qū)別、場景與實(shí)踐指南 在 Python 進(jìn)行 HTTP 網(wǎng)絡(luò)請(qǐng)求開發(fā)時(shí)(如使用requests ...
2025-09-15CDA 數(shù)據(jù)分析師:激活表格結(jié)構(gòu)數(shù)據(jù)價(jià)值的核心操盤手 表格結(jié)構(gòu)數(shù)據(jù)(如 Excel 表格、數(shù)據(jù)庫表)是企業(yè)最基礎(chǔ)、最核心的數(shù)據(jù)形態(tài) ...
2025-09-15Python HTTP 請(qǐng)求工具對(duì)比:urllib.request 與 requests 的核心差異與選擇指南 在 Python 處理 HTTP 請(qǐng)求(如接口調(diào)用、數(shù)據(jù)爬取 ...
2025-09-12解決 pd.read_csv 讀取長浮點(diǎn)數(shù)據(jù)的科學(xué)計(jì)數(shù)法問題 為幫助 Python 數(shù)據(jù)從業(yè)者解決pd.read_csv讀取長浮點(diǎn)數(shù)據(jù)時(shí)的科學(xué)計(jì)數(shù)法問題 ...
2025-09-12CDA 數(shù)據(jù)分析師:業(yè)務(wù)數(shù)據(jù)分析步驟的落地者與價(jià)值優(yōu)化者 業(yè)務(wù)數(shù)據(jù)分析是企業(yè)解決日常運(yùn)營問題、提升執(zhí)行效率的核心手段,其價(jià)值 ...
2025-09-12用 SQL 驗(yàn)證業(yè)務(wù)邏輯:從規(guī)則拆解到數(shù)據(jù)把關(guān)的實(shí)戰(zhàn)指南 在業(yè)務(wù)系統(tǒng)落地過程中,“業(yè)務(wù)邏輯” 是連接 “需求設(shè)計(jì)” 與 “用戶體驗(yàn) ...
2025-09-11塔吉特百貨孕婦營銷案例:數(shù)據(jù)驅(qū)動(dòng)下的精準(zhǔn)零售革命與啟示 在零售行業(yè) “流量紅利見頂” 的當(dāng)下,精準(zhǔn)營銷成為企業(yè)突圍的核心方 ...
2025-09-11CDA 數(shù)據(jù)分析師與戰(zhàn)略 / 業(yè)務(wù)數(shù)據(jù)分析:概念辨析與協(xié)同價(jià)值 在數(shù)據(jù)驅(qū)動(dòng)決策的體系中,“戰(zhàn)略數(shù)據(jù)分析”“業(yè)務(wù)數(shù)據(jù)分析” 是企業(yè) ...
2025-09-11Excel 數(shù)據(jù)聚類分析:從操作實(shí)踐到業(yè)務(wù)價(jià)值挖掘 在數(shù)據(jù)分析場景中,聚類分析作為 “無監(jiān)督分組” 的核心工具,能從雜亂數(shù)據(jù)中挖 ...
2025-09-10統(tǒng)計(jì)模型的核心目的:從數(shù)據(jù)解讀到?jīng)Q策支撐的價(jià)值導(dǎo)向 統(tǒng)計(jì)模型作為數(shù)據(jù)分析的核心工具,并非簡單的 “公式堆砌”,而是圍繞特定 ...
2025-09-10