python除了關(guān)鍵字(keywords)和內(nèi)置的類型和函數(shù)(builtins),更多的功能是通過libraries(即modules)來(lái)提供的。
常用的libraries(modules)如下:
1)python運(yùn)行時(shí)服務(wù)
* copy: copy模塊提供了對(duì)復(fù)合(compound)對(duì)象(list,tuple,dict,custom class)進(jìn)行淺拷貝和深拷貝的功能。
* pickle: pickle模塊被用來(lái)序列化python的對(duì)象到bytes流,從而適合存儲(chǔ)到文件,網(wǎng)絡(luò)傳輸,或數(shù)據(jù)庫(kù)存儲(chǔ)。(pickle的過程也被稱serializing,marshalling或者flattening,pickle同時(shí)可以用來(lái)將bytes流反序列化為python的對(duì)象)。
* sys:sys模塊包含了跟python解析器和環(huán)境相關(guān)的變量和函數(shù)。
* 其他: atexit,gc,inspect,marshal,traceback,types,warnings,weakref。
2)數(shù)學(xué)
* decimal:python中的float使用雙精度的二進(jìn)制浮點(diǎn)編碼來(lái)表示的,這種編碼導(dǎo)致了小數(shù)不能被精確的表示,例如0.1實(shí)際上內(nèi)存中為0.100000000000000001,還有3*0.1 == 0.3 為False. decimal就是為了解決類似的問題的,擁有更高的精確度,能表示更大范圍的數(shù)字,更精確地四舍五入。
* math:math模塊定義了標(biāo)準(zhǔn)的數(shù)學(xué)方法,例如cos(x),sin(x)等。
* random:random模塊提供了各種方法用來(lái)產(chǎn)生隨機(jī)數(shù)。
* 其他:fractions,numbers。
3)數(shù)據(jù)結(jié)構(gòu),算法和代碼簡(jiǎn)化
* array: array代表數(shù)組,類似與list,與list不同的是只能存儲(chǔ)相同類型的對(duì)象。
* bisect: bisect是一個(gè)有序的list,其中內(nèi)部使用二分法(bitsection)來(lái)實(shí)現(xiàn)大部分操作。
* collections:collections模塊包含了一些有用的容器的高性能實(shí)現(xiàn),各種容器的抽象基類,和創(chuàng)建name-tuple對(duì)象的函數(shù)。例如包含了容器deque,defaultdict,namedtuple等。
* heapq:heapq是一個(gè)使用heap實(shí)現(xiàn)的帶有優(yōu)先級(jí)的queue。
* itertools:itertools包含了函數(shù)用來(lái)創(chuàng)建有效的iterators。所有的函數(shù)都返回iterators或者函數(shù)包含iterators(例如generators 和generators expression)。
* operator: operator提供了訪問python內(nèi)置的操作和解析器提供的特殊方法,例如 x+y 為 add(x,y),x+=y為iadd(x,y),a % b 為mod(a,b)等等。
* 其他:abc,contextlib,functools。
4) string 和 text 處理
*codecs:codecs模塊被用來(lái)處理不同的字符編碼與unicode text io的轉(zhuǎn)化。
* re:re模塊用來(lái)對(duì)字符串進(jìn)行正則表達(dá)式的匹配和替換。
* string:string模塊包含大量有用的常量和函數(shù)用來(lái)處理字符串。也包含了新字符串格式的類。
* struct:struct模塊被用來(lái)在python和二進(jìn)制結(jié)構(gòu)間實(shí)現(xiàn)轉(zhuǎn)化。
* unicodedata:unicodedata模塊提供訪問unicode字符數(shù)據(jù)庫(kù)
5) python數(shù)據(jù)庫(kù)訪問
* 關(guān)系型數(shù)據(jù)庫(kù)擁有共同的規(guī)范Python Database API Specification V2.0,MySQL,Oracle等都實(shí)現(xiàn)了此規(guī)范,然后增加自己的擴(kuò)展。
* sqlite3: sqlite3 模塊提供了SQLite數(shù)據(jù)庫(kù)訪問的接口。SQLite數(shù)據(jù)庫(kù)是以一個(gè)文件或內(nèi)存的形式存在的自包含的關(guān)系型數(shù)據(jù)庫(kù)。
* DBM-style 數(shù)據(jù)庫(kù)模塊:python提供了打了的modules來(lái)支持UNIX DBM-style數(shù)據(jù)庫(kù)文件。dbm模塊用來(lái)讀取標(biāo)準(zhǔn)的UNIX-dbm數(shù)據(jù)庫(kù)文件,gdbm用來(lái)讀取GNU dbm數(shù)據(jù)庫(kù)文件,dbhash用來(lái)讀取Berkeley DB數(shù)據(jù)庫(kù)文件。所有的這些模塊提供了一個(gè)對(duì)象實(shí)現(xiàn)了基于字符串的持久化的字典,他與字典dict非常相似,但是他的keys和values都必須是字符串。
* shelve:shelve模塊使用特殊的“shelf”對(duì)象來(lái)支持持久化對(duì)象。這個(gè)對(duì)象的行為與dict相似,但是所有的他存儲(chǔ)的對(duì)象都使用基于hashtable的數(shù)據(jù)庫(kù)(dbhash,dbm,gdbm)存儲(chǔ)在硬盤。與dbm模塊的區(qū)別是所存儲(chǔ)的對(duì)象不僅是字符串,而且可以是任意的與pickle兼容的對(duì)象。
6)文件和目錄處理
* bz2:bz2模塊用來(lái)處理以bzip2壓縮算法壓縮的文件。
* filecmp:filecmp模塊提供了函數(shù)來(lái)比較文件和目錄。
* fnmatch:fnmatch模塊提供了使用UNIX shell-style的通配符來(lái)匹配文件名。這個(gè)模塊只是用來(lái)匹配,使用glob可以獲得匹配的文件列表。
* glob:glob模塊返回了某個(gè)目錄下與指定的UNIX shell通配符匹配的所有文件。
* gzip:gzip模塊提供了類GzipFile,用來(lái)執(zhí)行與GNUgzip程序兼容的文件的讀寫。
* shutil: shutil模塊用來(lái)執(zhí)行更高級(jí)別的文件操作,例如拷貝,刪除,改名。shutil操作之針對(duì)一般的文件,不支持pipes,block devices等文件類型。
* tarfile: tarfile模塊用來(lái)維護(hù)tar存檔文件。tar沒有壓縮的功能。
* tempfile:tempfile模塊用來(lái)產(chǎn)生臨時(shí)文件和文件名。
* zipfile: zipfile模塊用來(lái)處理zip格式的文件。
* zlib,zlib模塊提供了對(duì)zlib庫(kù)的壓縮功能的訪問。
7)操作系統(tǒng)的服務(wù)
* cmmands: commands模塊被用來(lái)執(zhí)行簡(jiǎn)單的系統(tǒng)命令,命令以字符串的形式傳入,且同時(shí)以字符串的形式返回命令的輸出。但是此模塊只在UNIX系統(tǒng)上可用。
* configParser,configParser模塊用來(lái)讀寫windows的ini格式的配置文件。
* datetime,datetime模塊提供了各種類型來(lái)表示和處理日期和時(shí)間。
* errno, 定義了所有的errorcode對(duì)應(yīng)的符號(hào)名字。
* io,io模塊實(shí)現(xiàn)了各種IO形式和內(nèi)置的open()函數(shù)。
* logging, logging模塊靈活方便地對(duì)應(yīng)用程序記錄events,errors,warnings,和debuging 信息。這些log信息可以被收集,過濾,寫到文件或系統(tǒng)log,甚至通過網(wǎng)絡(luò)發(fā)送到遠(yuǎn)程的機(jī)器上。
*mmap,mmap模塊提供了內(nèi)存映射文件對(duì)象的支持,使用內(nèi)存映射文件與使用一般的文件或byte字符串相似。
*msvcrt,mscrt只可以在windows系統(tǒng)使用,用來(lái)訪問Visual C運(yùn)行時(shí)庫(kù)的很多有用的功能。
*optparse,optparse模塊更高級(jí)別來(lái)處理UNIX style的命令行選項(xiàng)sys.argv。
* os,os模塊對(duì)通用的操作系統(tǒng)服務(wù)提供了可移植的(portable)的接口。os可以認(rèn)為是nt和posix的抽象。nt提供windows的服務(wù)接口,posix提供UNIX(linux,mac)的服務(wù)接口。
* os.path,os.path模塊以可移植的方式來(lái)處理路徑相關(guān)的操作。
* signal,signal模塊用來(lái)實(shí)現(xiàn)信號(hào)(signal)處理,往往跟同步有關(guān)。
* subprocess,subprocess模塊包含了函數(shù)和對(duì)象來(lái)統(tǒng)一創(chuàng)建新進(jìn)程,控制新進(jìn)程的輸入輸出流,處理進(jìn)程的返回。
* time,time模塊提供了各種時(shí)間相關(guān)的函數(shù)。常用的time.sleep().
* winreg, winreg模塊用來(lái)操作windows注冊(cè)表。
* 其他:fcntl。
8)線程和并行
* multiprocessing,multiprocessing模塊提供通過subprocess來(lái)加載多個(gè)任務(wù),通信,共享數(shù)據(jù),執(zhí)行各種同步操作。
* threading,threading模塊提供了thread類很很多的同步方法來(lái)實(shí)現(xiàn)多線程編程。
* queue,queue模塊實(shí)現(xiàn)了各種多生產(chǎn)者,多消費(fèi)者隊(duì)列,被用來(lái)實(shí)現(xiàn)多線程程序的信息安全交換。
* 其他:Coroutines and Microthreading。
9)網(wǎng)絡(luò)編程和套接字(sockets)
* asynchat,asynchat模塊通過封裝asyncore來(lái)簡(jiǎn)化了應(yīng)用程序的網(wǎng)絡(luò)異步處理。
* ssl,ssl模塊被用來(lái)使用secure sockets layer(SSL)包裝socket對(duì)象,從而使得實(shí)現(xiàn)數(shù)據(jù)加密和終端認(rèn)證。python使用openssl來(lái)實(shí)現(xiàn)此模塊。
* socketserver,socketserver模塊提供了類型簡(jiǎn)化了TCP,UDP和UNIX領(lǐng)域的socket server的實(shí)現(xiàn)。
* 其他:asyncore,select。
10)internet應(yīng)用程序編程
* ftplib,ftplib模塊實(shí)現(xiàn)了ftp的client端協(xié)議。此模塊很少使用,因?yàn)閡rllib提供了更高級(jí)的接口。
* http包,包含了http client和server的實(shí)現(xiàn)和cookies管理的模塊。
* smtplib,smtplib包含了smtp client的底層接口,用來(lái)使用smtp協(xié)議發(fā)送郵件。
* urllib,urllib包提供了高級(jí)的接口來(lái)實(shí)現(xiàn)與http server,ftp server和本地文件交互的client。
* xmlrpc,xmlrpc模塊被用類實(shí)現(xiàn)XML-RPC client。
11)web 編程
* cgi,cgi模塊用來(lái)實(shí)現(xiàn)cgi腳本,cgi程序一般地被webserver執(zhí)行,用來(lái)處理用戶在form中的輸入,或生成一些動(dòng)態(tài)的內(nèi)容。當(dāng)與cgi腳本有管的request被提交,webserver將cgi作為子進(jìn)程執(zhí)行,cgi程序通過sys.stdin或環(huán)境變量來(lái)獲得輸入,通過sys.stdout來(lái)輸出。
* webbrowser,webbrowser模塊提供了平臺(tái)獨(dú)立的工具函數(shù)來(lái)使用web browser打開文檔。
* 其他:wsgiref/WSGI (Python Web Server Gateway Interface).
12) internet 數(shù)據(jù)處理和編碼
* base64,base64模塊提供了base64,base32,base16編碼方式,用來(lái)實(shí)現(xiàn)二進(jìn)制與文本間的編碼和解碼。base64通常用來(lái)對(duì)編碼二進(jìn)制數(shù)據(jù),從而嵌入到郵件或http協(xié)議中。
* binascii,binascii模塊提供了低級(jí)的接口來(lái)實(shí)現(xiàn)二進(jìn)制和各種ASCII編碼的轉(zhuǎn)化。
* csv,csv模塊用來(lái)讀寫comma-separated values(CSV)文件。
* email,email包提供了大量的函數(shù)和對(duì)象來(lái)使用MIME標(biāo)準(zhǔn)來(lái)表示,解析和維護(hù)email消息。
* hashlib,hashlib模塊實(shí)現(xiàn)了各種secure hash和message digest algorithms,例如MD5和SHA1。
* htmlparser(html.parser),此模塊定義了HTMLParser來(lái)解析HTML和XHTML文檔。使用此類,需要定義自己的類且繼承于HTMLParser。
* json,json模塊被用類序列化或飯序列化Javascript object notation(JSON)對(duì)象。
* xml,xml包提供了各種處理xml的方法。
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元
