原書內容https://github.com/eastlakeside/interpy-zhpython
經過記錄書本目錄和大概內容作一個記錄,方便之後回顧檢索。git
Chapter | Title | Brief | More |
---|---|---|---|
1 | *argv和**kwargv | 給函數輸入可變參數 | *argv爲列表,*kwargv爲字典 |
2 | 調試pdb | 代碼層面下斷點調試 | |
3 | 生成器 | 定義了__iter__或__getitem__的爲可迭代對象,定義了__next__的爲迭代器 | yeild的用處 |
4 | Map, Filter and Reduce | - map會將一個函數映射到一個列表上的全部函數,map(function_to_apply, list_of_outputs)。python3返回一個迭代器,list返回列表。<br>- filter過濾列表中的元素,而且返回一個由全部符合要求的元素所構成的列表。<br>- reduce能夠對一個列表進行一些計算並返回結果,相似歸併。 | |
5 | set數據結構 | set不能包含重複元素 | - 交集:set1.intersection(set2)<br>- 差集:set1.difference(set2) |
6 | 裝飾器 | 在執行一個函數期間須要執行其餘操做,可使用裝飾器,更簡單的就是定義裝飾器而後使用@ | |
7 | 對象變更Mutation | 注意默認值,且python默認值只初始一次 | |
8 | __slots__魔法 | 節省小類的資源 | |
9 | 虛擬環境 | virtualenv | |
10 | Collections | defaultdict, counter, deque, namedtuple, enum.Enum | |
11 | 枚舉 Enumerate | ||
12 | 對象自省(introspection) | dir, type, id, inspect | |
13 | 推導式(comprehension) | 從一種數據序列構建另外一種新的數據序列的結構體 eg. list, dict, set | 集合的推倒式爲{},由於()生成的是迭代器 |
14 | 異常 | try, except, finally, else | 無論觸不觸發異常都執行finally,異常不觸發執行else |
15 | lambda表達式 | lambda 參數: 操做(參數) | |
16 | 一行式 | 簡易WebServer<br>漂亮的打印<br>腳本性能分析<br>csv轉json<br>列表flat<br>一行構造器 | python3 -m http.server<br>from pprint import pprint<br>python -m cPorfile my_script.py<br>... |
17 | for else | 當循環完整執行後執行else語句 | |
18 | 使用C擴展 | Ctypes, SWING, Python/C API | |
19 | 協程 | 若是迭代器是數據的生成者,那麼協程就是消費者 | line = (yield), 經過外部send給協程,就能夠執行後續的if pattern in line,關閉用close() |
20 | 函數緩存 | 函數緩存容許咱們將一個函數對於給定參數的返回值緩存起來 | @lr_cache(maxsize=32), 清除緩存使用function.cache_clear() |
21 | 上下文管理(with語法) | 基於類實現__enter__和__exit__<br>處理異常<br>基於生成器@contextmanager |