流暢的Python PDF下載高清完整掃描原版

来源:https://www.cnblogs.com/liulangdemao/archive/2018/05/29/9103066.html
-Advertisement-
Play Games

書名:流暢的Python作者:[巴西] Luciano Ramalho譯者:安道 吳珂ISBN:978-7-115-45415-7 需要學習的朋友可以通過網盤下載pdf版 http://tadown.com/fs/cyibbebnsahu08034/ 目標讀者本書的目標讀者是那些正在使用 Pytho ...


書名:流暢的Python
作者:[巴西] Luciano Ramalho
譯者:安道 吳珂
ISBN:978-7-115-45415-7


需要學習的朋友可以通過網盤下載pdf版 http://tadown.com/fs/cyibbebnsahu08034/

目標讀者
本書的目標讀者是那些正在使用 Python,又想熟悉 Python 3 的程式員。
如果你懂 Python 2,但是想遷移到 Python 3.4 或者更新的版本,也沒問
題。在寫這本書的時候,大多數專業 Python 程式員用的還是 Python 2,
因此如果書中出現來自 Python 3 的特性,讀者可能會感到陌生,我也會
特別地做出解釋。
然而,本書的主要目的是為了充分地展現 Python 3.4 的魅力,因此我不
會一字一句地說明如何讓本書的代碼在舊版本里正常運行。本書中的大
多數例子稍做修改(甚至不用修改)就可以在 Python 2.7 裡面跑起來,
但是有些例子,如果追求向下相容,就會需要大量的重寫。
話雖如此,我還是認為,即便你無法從 Python 2.7 里脫身,這本書也會
對你很有幫助,因為 Pyhon 語言的核心概念是不會變的。Python 3 也不
是一門全新的語言,大多數的改動花一下午大概就能適應,官方文檔
里“Python 3.0 的新特性”一節
(https://docs.python.org/3.0/whatsnew/3.0.html)就是很好的切入點。固
然,自 2009 年發佈以來,Python 3.0 也在變化,但是這些變化比起
Python 3.0 和 Python 2.0 之間的區別,並沒有那麼重要。
如果你尚不清楚自己對 Python 的熟悉程度能否跟得上本書的內容,建議
你回頭看看 Python 的官方教程。註意,除非是跟 Python 3 的新特性有
關,教程里的其他內容本書不會重覆。
非目標讀者
如果你才剛剛開始學 Python,本書的內容可能會顯得有些“超綱”。比難
懂更糟的是,如果在學習 Python 的過程中過早接觸本書的內容,你可能
會誤以為所有的 Python 代碼都應該利用特殊方法和元編程
(metaprogramming)技巧。我們知道,不成熟的抽象和過早的優化一
樣,都會壞事。
本書的結構
如果你是本書的目標讀者,那你應該可以從本書的任意一章開始閱讀,
但是如果按照我寫作時的構思來的話,本書一共分為六個獨立的部分,
每個部分內的章節最好按照順序來讀。
在介紹讓你自己實現某些功能的方法之前,我通常會先把現成可用的工
具講清楚。比如說第二部分的第 2 章覆蓋了序列類型(sequence
type),但是像 collections.deque 這種類可能就會一帶而過。一直
到第四部分,我們才會看看如何從抽象基類(abstract base class,
ABC)中獲利,抽象基類則被封裝在 collections.abc 這個包里。如
果想創建自己的 ABC,你可能得看到第四部分的最後一些內容才行,
因為我一直覺得,如果沒有熟練使用 ABC 的經驗,貿然去實現一套自
己的東西是不合適的。
這樣做有幾個好處。第一,知道有什麼現成的工具可用,能避免重新發
明輪子。畢竟我們使用現有集合類型(collection type)的概率要遠大於
自己動手寫一套新的。第二,這樣一來,在討論如何寫新類型之前,我
們能夠有更多的機會來瞭解這些現成類的高級用法。第三,比起從零開
始構建一個 ABC,繼承已有的 ABC 庫應該會簡單一些。最後,我認為
在看過一些實際的案例之後,理解抽象會更輕鬆。
當然,這樣也會帶來一些不便之處,比如書里的向前引用就會分散在各
個不同的章節裡面。但是經過上述這番梳理,我想這一點不便之處也是
可以容忍的。
下麵是本書每一部分的主題
第一部分
  第一部分只有單獨的一章,講解的是 Python 的數據模型(data
model),以及如何為了保證行為一致性而使用特殊方法(比如
__repr__),畢竟 Python 的一致性是出了名的。其實整本書幾乎都是
在講解 Python 的數據模型,第 1 章算是一個概覽。
第二部分
  第二部分包含了各種集合類型:序列(sequence)、映射
(mapping)和集合(set),另外還提及了字元串(str)和位元組序列
(bytes)的區分。說起來,最後這一點也是讓親者(Python 3 用戶)
快,仇者(Python 2 用戶)痛的一個關鍵,因為這個區分致使 Python 2
代碼遷移到 Python 3 的難度陡增。第二部分的目標是幫助讀者回憶起
Python 內置的類庫,順帶解釋這些類庫的一些不太直觀的地方。具體的
例子有 Python 3 如何在我們觀察不到的地方對 dict 的鍵重新排序,或
者是排序有區域(locale)依賴的字元串時的註意事項。為了達到本部
分的目標,有些地方的講解會比較大而全,像序列類型和映射類型的變
種就是這樣;有時則會寫得很深入,比方說我會對 dict 和 set 底層的
散列表進行深層次的討論。
第三部分
  如何把函數作為一等對象(first-order object)來使用。第三部分首
先會解釋前面這句話是什麼意思,然後話題延伸到這個概念對那些被廣
泛使用的設計模型的影響,最後讀者會看到如何利用閉包(closure)的
概念來實現函數裝飾器(function decorator)。這一部分的話題還包括
Python 的這些基本概念:可調用(callable)、函數屬性(function
attribute)、內省(introspection)、參數註解(parameter annotation)和
Python 3 里新出現的 nonlocal 聲明。
第四部分
  到了這裡,書的重點轉移到了類的構建上面。雖然在第二部分里的
例子里就有類聲明(class declaration)的出現,但是第四部分會呈現更
多的類。和任何面向對象語言一樣,Python 還有些自己的特性,這些特
性可能並不會出現在你我學習基於類的編程的語言中。這一部分的章節
解釋了引用(reference)的原理、“可變性”的概念、實例的生命周期、
如何構建自定義的集合類型和 ABC、多重繼承該怎麼理順、什麼時候
應該使用操作符重載及其方法。
第五部分
  Python 中有些結構和庫不再滿足於諸如條件判斷、迴圈和子程式
(subroutine)之類的順序控制流程,第五部分的筆墨會集中在這些構造
和庫上。我們會從生成器(generator)起步,然後話題會轉移到上下文
管理器(context manager)和協程(coroutine),其中會涵蓋新增的功能
強大但又不容易理解的 yield from 語法。這一部分以併發性和麵向事
件的 I/O 來結尾,其中跟併發性相關的是 collections.futures 這個
很新的包,它藉助 futures 包把線程和進程的概念給封裝了起來;而
跟面向事件 I/O 相關的則是 asyncio,它的背後是基於協程和 yield
from 的 futures 包。
第六部分
  第六部分的開頭會講到如何動態創建帶屬性的類,用以處理諸如
JSON 這類半結構化的數據。然後會從大家已經熟悉的特性(property)
機制入手,用描述符從底層來解釋 Python 對象屬性的存取。同時,函
數、方法和描述符的關係也會被梳理一遍。第六部分會從頭至尾地實現
一個欄位驗證器,在這個過程中我們會遇到一些微妙的問題,然後在最
後一章中就自然引出像類裝飾器(class decorator)和元類(metaclass)
這些高級的概念。
以實踐為基礎
一般情況下,我們會用 Python 的互動式控制台來探索各種庫和語言本
身。有些讀者可能對靜態的需要編譯的語言更熟悉,但是這些語言可能
不會提供 REPL(read-eval-print loop,讀取、求值、輸出的迴圈)。在
這裡我想強調一下 Python 互動式控制台,也就是 REPL,作為一個學習
工具的重要性。
doctest(https://docs.python.org/3/library/doctest.html)是 Python 的一個標
準庫,做測試用的。這個庫通過模擬控制台對話來檢驗表達式求值是否
正確,而本書中幾乎所有代碼的測試,包括那些在控制台里的輸出,都
是通過這個庫來進行的。doctest 看起來就像是 Python 互動式控制台的劇
本,你甚至都不需要瞭解它背後的運行機制就可以直接用它來試驗書里
的例子。
我有時為了事先說明一段代碼的目的,會在展示代碼之前先擺出相應的
doctest 文本。這是因為我認為,在考慮如何實現一個功能之前,先嚴格
地列出這個功能能做什麼,這能幫助我們在編程時把精力花在該花的地
方。測試驅動開發(TDD)的精髓就是先寫測試,我後來發現這種精神
在教學中也是大有益處的。如果你對 doctest 還不熟悉,花點時間閱讀
它的文檔(https://docs.python.org/3/library/doctest.html)。結合本書的源
碼(https://github.com/fluentpython/example-code),你可以在操作系統的
控制台里鍵入 python3 -m doctest example_script.py 來驗證書
中幾乎所有代碼的正確性。
硬體
書中有一些簡單的時間和基準測試,跑這些測試的時候我用的是寫書時
的兩台筆記本電腦。一臺是產於 2011 年的 MacBook Pro 13 英寸筆記
本,配置是 2.7 GHz 的英特爾 Core i7 處理器、8GB 的記憶體和機械硬
盤;另一臺是產於 2014 年的 MacBook Air 13 英寸筆記本,配置是 1.4
GHz 的英特爾 Core i5 處理器、4GB 記憶體和一個固態硬碟。MacBook Air
的處理器雖然慢一些,記憶體也沒有另一臺多,但是它的記憶體快一些
(1600 MHz,MacBook Pro 13 英寸則是 1333 MHz),另外它的硬碟也
更快,因此在日常使用中我並沒有感覺到兩台筆記本有速度上的差異。
雜談:個人的一點看法
從 1998 年起,我一直在使用 Python,也做 Python 教學,另外還一直在
為它辯護。我一直都很享受這個過程,尤其是喜歡研究 Python 同其他語
言在設計和理論上的不同。因此在有些章節的最後,我會加上一點自己
對 Python 以及其他語言的看法,我把這部分叫作“雜談”。如果你對這些
東西不感興趣,跳過即可,因為這些並不是必讀的。

第 1 章 Python 數據模型

第 2 章 序列構成的數組

第 3 章 字典和集合

第 4 章 文本和位元組序列

第 5 章 一等函數

第 6 章 使用一等函數實現設計模

第 7 章 函數裝飾器和閉包

第 8 章 對象引用、可變性和垃圾
回收

第 9 章 符合Python風格的對象

第 10 章 序列的修改、散列和切

第 11 章 介面:從協議到抽象基

第 12 章 繼承的優缺點

第 13 章 正確重載運算符

第 14 章 可迭代的對象、迭代器
和生成器

第 15 章 上下文管理器和 else 塊

第 16 章 協程

第 17 章 使用期物處理併發

第 18 章 使用 asyncio 包處理並

第 19 章 動態屬性和特性

第 20 章 屬性描述符

第 21 章 類元編程

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 博客地址:http://www.cnblogs.com/yudanqu/ 一、遞歸 遞歸調用:一個函數,調用的自身,稱為遞歸調用 遞歸函數:一個可以調用自身的函數稱為遞歸函數 凡是迴圈能幹的事,遞歸都能幹 下麵我們通過兩段代碼簡單看一下遞歸和非遞歸的區別: 輸入一個大於等於1的數,求1到n的和! 下 ...
  • 需要的聯繫我,QQ:1844912514 第1周 開課介紹 python發展介紹 第一個python程式 變數 字元編碼與二進位 字元編碼的區別與介紹 用戶交互程式 if else流程判斷 while 迴圈 while 迴圈優化版本 for 迴圈及作業要求 第2周 本節雞湯 模塊初識 pyc是什麼 ...
  • Java開源生鮮電商平臺-伺服器部署設計與架構(源碼可下載) 補充說明:Java開源生鮮電商平臺-伺服器部署設計與架構,指的是通過伺服器正式上線整個項目,進行正式的運營。 回顧整個章節,我們涉及到以下幾個方面: 1. 買家端 2. 賣家端。 3. 銷售端 4. 配送端。 5.系統運營端。 6.公司網 ...
  • 一、什麼是Servlet Servlet 運行在服務端的Java小程式, 是sun公司提供一套規範(介面) 主要功能: 用來處理客戶端請求 響應給瀏覽器的動態資源 servlet的實質就是java代碼, 通過java的API動態的向客戶端輸出內容 以後寫的程式就不在是在本地執行了。 而是編譯成位元組碼 ...
  • 就算你沒有用到過其他的設計模式,但是單例模式你肯定接觸過,比如,Spring 中 bean 預設就是單例模式的,所有用到這個 bean 的實例其實都是同一個。 單例模式的使用場景 什麼是單例模式呢,單例模式(Singleton)又叫單態模式,它出現目的是為了保證一個類在系統中只有一個實例,並提供一個 ...
  • 這一介面會對實現了它的類施加一個整體的順序.這一順序被認為是類的自然順序,類的比較方法compareTo()也被認為是自然比較方法 實現這一介面的對象中,List類對象使用Collections.sort方法實現自動排序(升序),數組使用Arrays.sort()方法實現升序排序.實現這一介面的對象 ...
  • Python代碼如下: ...
  • Java類庫中有為滿足不同需求而設計的不同的器,實際上就是不同的介面。最近學習了比較器、迭代器和文件過濾器這三個介面,我根據自己的理解做了一個不成熟的總結,假如有很多不准確甚至是錯誤的地方,希望大家多多賜教! 這三個介面在設計的時候,並不是只是聲明一個介面以及它裡面的方法,也在需要特定類“配合”這些 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...