深入理解PYTHON特性
作 者: [德]達恩·巴德爾(Dan Bader) 著 孫波翔 譯
定 價: 49
出?版?社: 人民郵電出版社
出版日期: 2019年06月01日
頁 數: 163
裝 幀: 平裝
ISBN: 9787115511546
●第 1章 簡介 1 1.1 什麼是Python技巧 1 1.2 本書作用 2 1.3 如何閱讀本書 2 第 2章 Python整潔之道 4 2.1 用斷言加一層保險 4 2.1.1 示例:Python中的斷言 4 2.1.2 為什麼不用普通的異常來處理 6 2.1.4 常見陷阱 6 2.1.5 Python斷言總結 9 2.1.6 關鍵要點 9 2.2 巧妙地放置逗號 9 2.3 上下文管理器和with語句 11 2.3.1 在自定義對像中支持with 12 2.3.2 用上下文管理器編寫漂亮的API 13 2.3.3 關鍵要點 15 2.4 下劃線、雙下劃線及其他 15 2.4.1 前置單下劃線:_var 15 2.4.2 後置單下劃線:var_ 17 2.4.3 前置雙下劃線:__var 17 2.4.4 前後雙下劃線:__var__ 20 2.4.5 單下劃線:_ 21 2.4.6 關鍵要點 22 2.5 字符串格式化中令人震驚的真相 22 2.5.1 第 一種方法:“舊式”字符串格式化 22 2.5.2 第二種方法:“新式”字符串格式化 23 2.5.3 第三種方法:字符串字面值插值(Python 3.6+) 24 2.5.4 第四種方法:模板字符串 25 2.5.5 如何選擇字符串格式化方法 26 2.5.6 關鍵要點 27 2.6 “Python之禪”中的彩蛋 27 第3章 高效的函數 28 3.1 函數是Python的頭等對像 28 3.1.1 函數是對像 28 3.1.2 函數可存儲在數據結構中 29 3.1.3 函數可傳遞給其他函數 30 3.1.4 函數可以嵌套 31 3.1.5 函數可捕捉局部狀態 32 3.1.6 對像也可作為函數使用 33 3.1.7 關鍵要點 33 3.2 lambda是單表達式函數 34 3.2.1 lambda的使用場景 35 3.2.2 不應過度使用lambda 36 3.2.3 關鍵要點 36 3.3 裝飾器的力量 37 3.3.1 Python裝飾器基礎 38 3.3.2 裝飾器可以修改行為 39 3.3.3 將多個裝飾器應用於一個函數 41 3.3.5 如何編寫“可調試”的裝飾器 44 3.4 有趣的*args和**kwargs 44 3.4.1 傳遞可選參數或關鍵字參數 45 3.4.2 關鍵要點 46 3.5 函數參數解包 47 3.6 返回空值 48 第4章 類與面向對像 51 4.1 對像比較:is 與== 51 4.2 字符串轉換(每個類都需要__repr__) 52 4.2.1 __str__與__repr__ 54 4.2.2 為什麼每個類都需要__repr__ 55 4.2.3 Python 2.x的差異:__unicode__ 57 4.2.4 關鍵要點 58 4.3 定義自己的異常類 58 4.4 克隆對像 60 4.4.1 制作淺副本 61 4.4.2 制作深副本 62 4.4.3 復制任意對像 63 4.4.4 關鍵要點 65 4.5 用抽像基類避免繼承錯誤 65 4.6 namedtuple的優點 67 4.6.1 namedtuple上場 68 4.6.2 子類化namedtuple 70 4.6.3 內置的輔助方法 70 4.6.4 何時使用namedtuple 71 4.6.5 關鍵要點 71 4.7 類變量與實例變量的陷阱 72 4.7.1 與狗無關的例子 74 4.7.2 關鍵要點 75 4.8 實例方法、類方法和靜態方法揭秘 75 4.8.1 實例方法 76 4.8.2 類方法 76 4.8.3 靜態方法 76 4.8.4 在實踐中探尋 77 4.8.5 使用@classmethod的Pizza工廠類 78 4.8.6 什麼時候使用靜態方法 80 4.8.7 關鍵要點 81 第5章 Python中常見的數據結構 82 5.1 字典、映射和散列表 83 5.1.1 dict——首選字典實現 83 5.1.2 collections.OrderedDict——能記住鍵的插入順序 84 5.1.3 collections.defaultdict——為缺失的鍵返回默認值 85 5.1.4 collections.ChainMap——搜索多個字典 85 5.1.5 types.MappingProxyType——用於創建隻讀字典 86 5.1.6 Python中的字典:總結 86 5.1.7 關鍵要點 87 5.2 數組數據結構 87 5.2.1 列表——可變動態數組 88 5.2.2 &nb組——不可變容器 88 5.2.3 array.array——基本類型數組 89 5.2.4 str——含有Unicode 字符的不可變數組 90 5.2.5 bytes——含有單字節的不可變數組 91 5.2.6 bytearray——含有單字節的可變數組 91 5.2.7 關鍵要點 92 5.3 記錄、結構體和純數據對像 93 5.3.1 字典——簡單數據對像 93 5.3.2 &nb組——不可變對像集合 94 5.3.3 編寫自定義類——手動精細控制 96 5.3.4 collections.namedtuple——方便的數據對像 96 5.3.5 typing.NamedTuple——改進版namedtuple 97 5.3.6 struct.Struct——序列化C結構體 98 5.3.7 types.SimpleNamespace——花哨的屬性訪問 99 5.3.8 關鍵要點 99 5.4 集合和多重集合 100 5.4.1 set——首選集合實現 101 5.4.2 frozenset——不可變集合 101 5.4.3 collections.Counter——多重集合 101 5.4.4 關鍵要點 102 5.5 棧(後進先出) 102 5.5.1 列表——簡單的內置棧 103 5.5.2 collections.deque——快速且穩健的棧 104 5.5.3 queue.LifoQueue——為並行計算提供鎖語義 104 5.5.4 比較Python 中各個棧的實現 105 5.6 隊列(先進先出) 106 5.6.1 列表——非常慢的隊列 107 5.6.2 collections.deque——快速和穩健的隊列 107 5.6.3 queue.Queue——為並行計算提供的鎖語義 108 5.6.4 multiprocessing.Queue——共享作業隊列 108 5.6.5 關鍵要點 109 5.7 優先隊列 109 5.7.1 列表——手動維護有序隊列 110 5.7.3 queue.PriorityQueue——美麗的優先級隊列 111 5.7.4 關鍵要點 111 第6章 循環和迭代 112 6.1 編寫Python式的循環 112 6.2 理解解析式 114 6.3 列表切片技巧與壽司操作員 116 6.4 美麗的迭代器 118 6.4.1 無限迭代 119 6.4.2 for-in循環在Python中的工作原理 121 6.4.3 更簡單的迭代器類 122 6.4.4 不想無限迭代 123 6.4.5 Python 2.x兼容性 125 6.4.6 關鍵要點 126 6.5 生成器是簡化版迭代器 126 6.5.1 無限生成器 126 6.5.2 能夠停下來的生成器 128 6.5.3 關鍵要點 130 6.6 生成器表達式 130 6.6.1 生成器表達式與列表解析式 132 6.6.3 內聯生成器表達式 133 6.6.4 物極必反 133 6.6.5 關鍵要點 134 6.7 迭代器鏈 134 第7章 字典技巧 137 7.1 字典默認值 137 7.2 字典排序 139 7.3 用字典模擬switch/case語句 141 7.4 “最瘋狂”的字典表達式 144 7.5 合並詞典的幾種方式 148 7.6 美觀地輸出字典 149 第8章 Python式高效技巧 152 8.1 探索Python的模塊和對像 152 8.2 用virtualenv隔離項目依賴關繫 154 8.2.1 使用虛擬環境 155 8.2.2 關鍵要點 157 8.3 在字節碼後一窺究竟 157 第9章 結語 161 9.1 針對Python開發者免費每周提示 161 9.2 PythonistaCafe:Python開發人員的社區 162
內容簡介
本書致力於幫助Python開發人員挖掘這門語言及相關程序庫的很好特性,避免重復勞動,同時寫出簡潔、流暢、易讀、易維護的代碼。用好Python需要了解的很重要的特性、Python 2過渡到Python 3需要掌握的現代模式、有其他編程語言背景想快速上手Python的程序員需要特別注意的問題,等等,本書都可以解決。
[德]達恩·巴德爾(Dan Bader) 著 孫波翔 譯
達恩·巴德爾(Dan Bader) 影響優選1 000 000以上程序員的PythonistaCafe社區創始人,Real Python培訓機構總編,擁有近20年軟件開發經驗。巴德爾畢業於歐洲歷史悠久的慕尼黑工業大學,該校以優異的科教質量聞名,到2018年已經培養出17位諾貝爾獎得主。
"