作者:【美】 David Beazley & Brian K Jones
譯者:陳舸
出版:人民郵電出版社(2015年2月第1版 2015年2月北京第1次印刷)
原版:O’REILLY
一、內(nèi)容提要
本書介紹了 Python應(yīng)用在各個(gè)領(lǐng)域中的一些使用技巧和方法,其主題涵蓋了數(shù)據(jù)結(jié)構(gòu)和算法昌阿、字符串和文本、數(shù)字阿蝶、日期和時(shí)間,迭代器和生成器黄绩,文件和1/0,數(shù)據(jù)編碼與處理羡洁,函數(shù),類與對(duì)象宝与,元編程焚廊,模塊和包,網(wǎng)絡(luò)和Web編程习劫,并發(fā),實(shí)用腳本和系統(tǒng)管理嚼隘,測試诽里、調(diào)試以及異常,C語言擴(kuò)展等飞蛹。
本書覆蓋了 Python應(yīng)用中的很多常見問題谤狡,并提出了通用的解決方案。書中包含了大量實(shí)用的編程技巧和示例代碼卧檐,并在Python 3.3環(huán)境下進(jìn)行了測試墓懂,可以很方便地應(yīng)用到實(shí)際項(xiàng)目中去。此外霉囚,本書還詳細(xì)講解了解決方案是如何工作的捕仔,以及為什么能夠 工作。
本書非常適合具有一定編程基礎(chǔ)的Python程序員閱讀參考盈罐。
二榜跌、O’Reilly Media,Inc.介紹
O’Reilly Media通過圖書盅粪、雜志钓葫、在線服務(wù)、調(diào)查研究和會(huì)議等方式傳播創(chuàng)新知識(shí)票顾。 自1978年開始础浮,O’Reilly—直都是前沿發(fā)展的見證者和推動(dòng)者帆调。超級(jí)極客們正在開創(chuàng)著未來,而我們關(guān)注真正重要的技術(shù)趨勢——通過放大那些“細(xì)微的信號(hào)”來刺激社會(huì)對(duì)新科技的應(yīng)用豆同。作為技術(shù)社區(qū)中活躍的參與者番刊,O’Reilly的發(fā)展充滿了對(duì)創(chuàng)新的倡導(dǎo)、創(chuàng)造和發(fā)揚(yáng)光大诱告。
O’Reilly為軟件開發(fā)人員帶來革命性的“動(dòng)物書”撵枢;創(chuàng)建第一個(gè)商業(yè)網(wǎng)站(GNN);組織了影響深遠(yuǎn)的開放源代碼峰會(huì),以至于開源軟件運(yùn)動(dòng)以此命名精居;創(chuàng)立了Make雜志锄禽,從而成為DIY革命的主要先鋒;公司一如既往地通過多種形式締結(jié)信息與人的紐帶靴姿。 O’Reilly的會(huì)議和峰會(huì)集聚了眾多超級(jí)極客和高瞻遠(yuǎn)矚的商業(yè)領(lǐng)袖沃但,共同描繪出開創(chuàng) 新產(chǎn)業(yè)的革命性思想。作為技術(shù)人士獲取信息的選擇佛吓,O’Reilly現(xiàn)在還將先鋒專家的知識(shí)傳遞給普通的計(jì)算機(jī)用戶宵晚。無論是通過書籍出版,在線服務(wù)或者面授課程维雇,每一項(xiàng)O’Reilly的產(chǎn)品都反映了公司不可動(dòng)搖的理念——信息是激發(fā)創(chuàng)新的力量淤刃。
三、前言
自2008年以來吱型,我們已經(jīng)目睹了整個(gè)Python世界正緩慢向著Python 3進(jìn)化的事實(shí)逸贾。眾所周知,完全接納Python 3要花很長的時(shí)間津滞。事實(shí)上铝侵,就在寫作本書時(shí)(2013年),大多數(shù)Python程序員仍然堅(jiān)持在生產(chǎn)環(huán)境中使用Python 2触徐。關(guān)于Python 3不能向后兼容的事實(shí)也已經(jīng)做了許多努力來補(bǔ)救咪鲜。的確,向后兼容性對(duì)于任何已經(jīng)存在的代碼庫來說是個(gè)問題撞鹉。但是疟丙,如果你著眼于未來,你會(huì)發(fā)現(xiàn)Python 3帶來的好處絕非那么簡單孔祸。
正因?yàn)镻ython 3是著眼于未來的隆敢,本書在之前的版本上做了很大程度的修改。首先也是最重要的一點(diǎn)崔慧,這是一本積極擁抱Python 3的書拂蝎。所有的章節(jié)都采用Python 3.3來 編寫并進(jìn)行了驗(yàn)證,沒有考慮老的Python版本或者“老式”的實(shí)現(xiàn)方式惶室。事實(shí)上温自,許多章節(jié)都只適用于Python 3.3甚至更高的版本玄货。這么做可能會(huì)有風(fēng)險(xiǎn),但是最終的目的是要編寫一本Python 3的秘籍悼泌,盡可能基于最先進(jìn)的工具和慣用法松捉。我們希望本書可以指導(dǎo)人們用Python 3編寫新的代碼,或者幫助開發(fā)人員將已有的代碼升級(jí)到 Python 3馆里。
無需贅言隘世,以這種風(fēng)格來編寫本書給編輯工作帶來了一定的挑戰(zhàn)。只要在網(wǎng)絡(luò)上搜索一下Python秘籍鸠踪,立刻就能在ActiveState的Python版塊或者Stack Overflow這樣的站點(diǎn)上找到數(shù)以千計(jì)的使用心得和秘籍丙者。但是,大部分這類資源已經(jīng)沉浸在歷史和過去中了营密。由于這些心得和秘籍幾乎完全是針對(duì)Python 2所寫的械媒,其中常常包含有各種針對(duì)Python不同版本(例如2.3版對(duì)比2.4版)之間差異的變通方法和技巧。此外评汰,這些網(wǎng)上資源常常使用過時(shí)的技術(shù)纷捞,而這些技術(shù)現(xiàn)在成了Python 3.3的內(nèi)建功能。想尋找專門針對(duì)Python 3的資源會(huì)比較困難被去。
本書并非搜尋特定于Python 3方面的秘籍將其匯集而成主儡,本書的主題都是在創(chuàng)作中由現(xiàn)有的代碼和技術(shù)而產(chǎn)生出的靈感。我們將這些思想作為跳板惨缆,盡可能采用最現(xiàn)代化的Python編程技術(shù)來寫作缀辩,因此本書的內(nèi)容完全是原創(chuàng)性的。對(duì)于任何希望以現(xiàn)代 化的風(fēng)格來編寫代碼的人踪央,本書都可以作為參考手冊(cè)。
在選擇應(yīng)該包含哪些章節(jié)時(shí)瓢阴,我們有一個(gè)共識(shí)畅蹂。那就是根本不可能編寫一本涵蓋了每種Python用途的書。因此荣恐,我們?cè)谥黝}上優(yōu)先考慮Python語言核心方面的內(nèi)容液斜,以及能夠廣泛適用于各種應(yīng)用領(lǐng)域的常見任務(wù)。此外叠穆,有許多秘籍是用來說明在Python 3中新增的功能少漆,這對(duì)許多人來說比較陌生,甚至對(duì)于那些使用老版Python經(jīng)驗(yàn)豐富的程序員也是如此硼被。我們也會(huì)優(yōu)先選擇普遍適用的編程技術(shù)(即示损,編程模式)作為主題,而不會(huì)選擇那些試圖解決一個(gè)非常具體的實(shí)際問題但適用范圍太窄的內(nèi)容嚷硫。盡管在部分章節(jié)中也提到了特定的第三方軟件包检访,但本書絕大多數(shù)章節(jié)都只關(guān)注語言核心和標(biāo)準(zhǔn)庫始鱼。
四、本書適合誰
本書的目標(biāo)讀者是希望加深對(duì)Python語言的理解以及學(xué)習(xí)現(xiàn)代化編程慣用法的有經(jīng)驗(yàn)的程序員脆贵。本書許多內(nèi)容把重點(diǎn)放在庫医清、框架和應(yīng)用中使用的高級(jí)技術(shù)上。本書假設(shè)讀者已經(jīng)有了理解本書主題的必要背景知識(shí)(例如對(duì)計(jì)算機(jī)科學(xué)的一般性知識(shí)卖氨、數(shù)據(jù) 結(jié)構(gòu)会烙、復(fù)雜度計(jì)算、系統(tǒng)編程筒捺、并發(fā)柏腻、C語言編程等)。此外焙矛,本書中提到的秘籍往往只是一個(gè)框架葫盼,意在提供必要的信息讓讀者可以起步,但是需要讀者自己做更多的研究來填補(bǔ)其中的細(xì)節(jié)村斟。因此贫导,我們假設(shè)讀者知道如何使用搜索引擎以及優(yōu)秀的Python 在線文檔。
有一些更加高級(jí)的章節(jié)將作為讀者耐心閱讀的獎(jiǎng)勵(lì)蟆盹。這些章節(jié)對(duì)于理解Python底層的工作原理提供了深刻的見解孩灯。你將學(xué)到新的技巧和技術(shù),可以將這些知識(shí)運(yùn)用到自己的代碼中去逾滥。
五峰档、本書不適合誰
這不是一本用來給初學(xué)者首次學(xué)習(xí)Python編程而使用的書。事實(shí)上寨昙,本書已經(jīng)假設(shè)讀者通過Python教程或者人門書籍了解了基本知識(shí)猜年。本書同樣不能用來作為快速參考手冊(cè)(即哼审,快速查詢特定模塊中的某個(gè)函數(shù))。相反,本書的目標(biāo)是把重點(diǎn)放在特定的編程主題上四瘫,展示可能的解決方案并以此作為跳板引導(dǎo)讀者學(xué)習(xí)更加高級(jí)的內(nèi)容逼友。這些內(nèi)容你可能會(huì)在網(wǎng)上或者參考書中遇到過揉稚。
六卫键、在線代碼示例
本書中幾乎所有的代碼示例都可以在http://github.com/dabeaz/python-cookbook上找到。 作者歡迎讀者針對(duì)代碼示例提供bug修正缆巧、改進(jìn)以及評(píng)論布持。
七、使用代碼示例
本書的目的是為了幫助讀者完成工作陕悬。一般而言题暖,你可以在你的程序和文檔中使用本書中的代碼,而且也沒有必要取得我們的許可。但是芙委,如果你要復(fù)制的是核心代碼逞敷,則需要和我們打個(gè)招呼。例如灌侣,你可以在無需獲取我們?cè)S可的情況下推捐,在程序中使用本書中的多個(gè)代碼塊。但是侧啼,銷售或分發(fā)O’ Reilly圖書中的代碼光盤則需要取得我們的許可牛柒。通過引用本書中的示例代碼來回答問題時(shí),不需要事先獲得我們的許可痊乾。但是皮壁,如果你的產(chǎn)品文檔中融合了本書中的大量示例代碼,則需要取得我們的許可哪审。
在引用本書中的代碼示例時(shí)蛾魄,如果能列出本書的屬性信息是最好不過。一個(gè)屬性信息通常包括書名湿滓、作者滴须、出版社和ISBN。例如:Python Cookbook, 3rd edtion, by David Beazley and Brain K.Jones(O’Reilly)叽奥。Copyright 2013 David Beazley and Brain Jones, 978-1-449-34037-70
在使用書中的代碼時(shí)扔水,如果不確定是否屬于正常使用,或是否超出了我們的許可朝氓,請(qǐng)通過 permissions@oreilly.com 與我們聯(lián)系魔市。
八、聯(lián)系方式
如果你想就本書發(fā)表評(píng)論或有任何疑問赵哲,敬請(qǐng)聯(lián)系出版社待德。
美國:
O’Reilly Media Inc.
1005 Gravenstein Highway North Sebastopol, CA 95472
中國:
北京市西城區(qū)西直門南大街2號(hào)成銘大廈C座807室(100035)
奧萊利技術(shù)咨詢(北京)有限公司
我們還為本書建立了一個(gè)網(wǎng)頁,其中包含了勘誤表枫夺、示例和其他額外的信息磅网。你可以通過鏈接 http://oreil.ly/python_cookbook_3e來訪問頁面。
關(guān)于本書的技術(shù)性問題或建議筷屡,請(qǐng)發(fā)郵件到:
bookquestions@oreilly.com
歡迎登錄我們的網(wǎng)站(http://www.oreilly.com),查看更多我們的書籍簸喂、課程毙死、會(huì)議和最新動(dòng)態(tài)等信息。