python codec 深入理解Python特性

2021-10-19 00:11:01 字數 4817 閱讀 6659

第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.6 python中的字典:總結  86

5.1.7 關鍵要點  87

5.2 陣列資料結構  87

5.2.1 列表——可變動態陣列  88

5.2.2 元組——不可變容器  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 元組——不可變物件集合  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.******namespace——花哨的屬性訪問  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

深入理解C語言 深入理解指標

關於指標,其是c語言的重點,c語言學的好壞,其實就是指標學的好壞。其實指標並不複雜,學習指標,要正確的理解指標。指標也是一種變數,占有記憶體空間,用來儲存記憶體位址 指標就是告訴編譯器,開闢4個位元組的儲存空間 32位系統 無論是幾級指標都是一樣的 p操作記憶體 在指標宣告時,號表示所宣告的變數為指...

mysql 索引深入理解 深入理解MySql的索引

為什麼索引能提高查詢速度 先從 mysql的基本儲存結構說起 mysql的基本儲存結構是頁 記錄都存在頁裡邊 各個資料頁可以組成乙個雙向鍊錶每個資料頁中的記錄又可以組成乙個單向鍊錶 每個資料頁都會為儲存在它裡邊兒的記錄生成乙個頁目錄,在通過主鍵查詢某條記錄的時候可以在頁目錄中使用二分法快速定位到對應...

深入理解C語言 深入理解指標

關於指標,其是c語言的重點,c語言學的好壞,其實就是指標學的好壞。其實指標並不複雜,學習指標,要正確的理解指標。指標也是一種變數,占有記憶體空間,用來儲存記憶體位址 指標就是告訴編譯器,開闢4個位元組的儲存空間 32位系統 無論是幾級指標都是一樣的 p操作記憶體 在指標宣告時,號表示所宣告的變數為指...