Programming in Python 3: A Complete Introduction to the Python Language (2nd Edition)
這本一些基本觀念講得還滿詳細清楚的
不過程式碼不是很好,像開檔案沒有用 with 也沒有 close,不是好習慣
講自訂 class 的部分有一個地方明明要做 immutable 但 &= 實作改了 private value,但 __eq__ 根據那個 private value,__hash__ 卻是根據 id(),完全是有問題的寫法,果然一個小測試就會錯了:
>>> from FuzzyBool import FuzzyBool >>> g = FuzzyBool(.5) >>> g FuzzyBool(0.5) >>> id(g) 4306629328 >>> x = { g: 1 } >>> x {FuzzyBool(0.5): 1} >>> g&=FuzzyBool(.1) >>> g FuzzyBool(0.1) >>> id(g) 4306629328 >>> x[g] 1 >>> h = FuzzyBool(.1) >>> h FuzzyBool(0.1) >>> id(h) 4301064016 >>> x[h] Traceback (most recent call last):
如過 FuzzyBool 的地方換成 Python 的 int,最後那行是完全不會有問題的
所以這種很硬底子的地方講得又不夠清楚
不過還算值得一讀就是了,重要的東西和 library 都有介紹到