## 項目主頁
https://github.com/yidao620c/python3-cookbook
## 譯者的話
人生苦短,我用 Python!
譯者一直堅持使用 Python 3,因為它代表了 Python 的未來。雖然向后兼容是它的硬傷,但是這個局面遲早會改變的, 而且 Python 3 的未來需要每個人的幫助和支持。 目前市面上的教程書籍,網上的手冊大部分基本都是 2.x 系列的,專門基于 3.x 系列的書籍少的可憐。
最近看到一本《Python Cookbook》3rd Edition,完全基于 Python 3,寫的也很不錯。 為了 Python 3 的普及,我也不自量力,想做點什么事情。于是乎,就有了翻譯這本書的沖動了! 這不是一項輕松的工作,卻是一件值得做的工作:不僅方便了別人,而且對自己翻譯能力也是一種鍛煉和提升。
譯者會堅持對自己每一句的翻譯負責,力求高質量。但受能力限制,也難免有疏漏或者表意不當的地方。 如果譯文中有什么錯漏的地方請大家見諒,也歡迎大家隨時指正: yidao620@gmail.com
## 作者的話
自從 2008 年以來,Python 3 橫空出世并慢慢進化。Python 3 的流行一直被認為需要很長一段時間。 事實上,到我寫這本書的 2013 年,絕大部分的 Python 程序員仍然在生產環境中使用的是版本 2 系列, 最主要是因為 Python 3 不向后兼容。毫無疑問,對于工作在遺留代碼上的每個程序員來講,向后兼容是不得不考慮的問題。 但是放眼未來,你就會發現 Python 3 給你帶來不一樣的驚喜。
正如 Python 3 代表未來一樣,新的《Python Cookbook》版本相比較之前的版本有了一個全新的改變。 首先,也是最重要的,這意味著本書是一本非常前沿的參考書。書中所有代碼都是在 Python 3.3 版本下面編寫和測試的, 并沒有考慮之前老版本的兼容性,也沒有標注舊版本下的解決方案。這樣子可能會有爭議, 但是我們最終的目的是寫一本完全基于現代工具和語言的書籍。 我們希望本書能夠指導人們使用 Python 3 編寫新的代碼或者升級之前的遺留代碼。
毫無疑問,編寫一本這樣的書給編輯工作帶來一定的挑戰。如果在網上搜索 Python 秘籍的話,會在諸如 ActiveState’s Python recipes 或者 Stack Overflow 的網站上搜到數以千計的有用的秘籍,但是其中絕大部分都已經是過時的了。 這些秘籍除了是基于 Python 2 編寫之外,可能還有很多解決方案在不同的版本之間是不一樣的 (比如 2.3 和 2.4 版本)。 另外,它們還會經常使用一些過時的技術,這些可能已經內置到 Python 3.3 里面去了。尋找完全基于 Python 3 的秘籍真的難上加難啊。
這本書的所有主題都是基于已經存在的代碼和技術,而不是專門去尋找 Python 3 特有的秘籍。 在原有代碼基礎上,我們完全使用最新的 Python 技術去改造。 所以,任何想使用最新技術編寫代碼的程序員,都可以將本書當做一本很好的參考書籍。
在選擇要包含哪些秘籍方面,很明顯不可能編寫一本書囊括 Python 領域所有的東西。 因此,我們優先選擇了 Python 語言核心部分,以及那些有著廣泛應用領域的問題。 另外,其中有很多秘籍用來展示 Python 3 的新特性, 這對于很多人來說是比較陌生的,哪怕是使用 Python 老版本的經驗豐富的程序員。 這些示例程序也會偏向于展示一些有著廣泛應用的編程技術 (即編程模式), 而不是僅僅定位在一些具體的問題上。盡管也提及到了一些第三方包,但是本書主要定位在 Python 語言核心和標準庫。
## 這本書適合誰
這本書的目標讀者是那些想深入理解 Python 語言機制和現代編程風格的有經驗的 Python 程序員。 本書大部分內容集中于在標準庫,框架和應用程序中廣泛使用的高級技術。 本書所有示例均假設讀者具有一定的編程背景并且可以讀懂相關主題 (比如基本的計算機科學知識,數據結構知識,算法復雜度,系統編程,并行,C 語言編程等)。 另外,每個示例都只是一個入門指導,如果讀者想深入研究,需要自己去查閱更多資料。 我們假定讀者可以很熟練的使用搜索引擎以及知道怎樣查詢在線的 Python 文檔。
有一些更加高級的秘籍,如果耐心閱讀,將有助于理解 Python 底層的工作原理。 從中你將學到一些新的技巧和技術,并應用到你自己的代碼中去。
## 這本書不適合誰
這本書不適合 Python 的初學者。事實上,本書假定讀者具有 Python 教程或入門書籍中所教授的基礎知識。 本書也不是那種快速參考手冊 (例如快速查詢某個模塊下的某個函數)。 本書旨在聚焦幾個最重要的主題,演示幾種可能的解決方案, 提供一個跳板引導讀者進入一些更高級的內容(這些可以在網上或者參考手冊中找到)。
## 在線示例代碼
本書幾乎所有源代碼均可以在 http://github.com/dabeaz/python-cookbook 上面找到。 作者歡迎各位讀者修正 bug,改進代碼和評論。
## 使用示例代碼
本書就是幫助你完成你的工作的。 一般來講,只要是本書上面的示例代碼,你都可以隨時拿過去在你的源代碼和文檔中使用。 除非你使用了大量的代碼,否則不需要向我們申請許可。 例如,使用幾個代碼片段去完成一個程序不需要許可,販賣或者分發示例代碼的光盤則需要許可。 引用本書和示例代碼去網上回答一個問題不需要許可,但是合并大量的代碼到你的正式產品文檔中去則需要許可。
我們不會要求你添加代碼的出處,但是如果你這么做了,我們會很感激的。 引用通常包含標題,作者,出版社,ISBN。 例如:Python Cookbook, 3rd edition, by David Beazley and Brian K. Jones (O’Reilly). Copyright 2013 David Beazley and Brian Jones, 978-1-449-34037-7.
如果你覺得你對示例代碼的使用超出了合理使用或者上述列出的許可范圍, 請隨時聯系我們,我們的郵箱是 permissions@oreilly.com。
## 聯系我們
請將關于本書的評論和問題發送給出版社:
> O’Reilly Media, Inc.
> 1005 Gravenstein Highway North
> Sebastopol, CA 95472
> 800-998-9938 (in the United States or Canada)
> 707-829-0515 (international or local)
> 707-829-0104 (fax)
我們為本書建立了一個網頁, 其中包含勘誤表,示例和一些其他信息。 可以通過鏈接 http://oreil.ly/python_cookbook_3e 訪問。
關于本書的建議和技術性問題,請發送郵件至: bookquestions@oreilly.com
關于我們的書籍,討論會,新聞的更多信息, 請訪問我們的網站: http://www.oreilly.com
在 Facebook 上找到我們:http://facebook.com/oreilly
在 Twitter 上關注我們:http://twitter.com/oreillymedia
在 YouTube 上觀看我們:http://www.youtube.com/oreillymedia
## 致謝
我們衷心感謝本書的技術校審人員 Jake Vanderplas,Robert Kern 和 Andrea Crotti 非常有用的評論和建議, 還有 Python 社區的幫助和鼓勵。我們同樣感謝上一個版本的編輯 Alex Martelli,Anna Ravenscroft 和 David Ascher。 盡管這個版本是新創作的,但是前一個版本為本書提供了一個挑選主題和秘籍的初始框架。 最后也是最重要的,我們要感謝所有早期預覽版本的讀者,感謝你們為本書的改進提出的建議和意見。