Wednesday, December 4, 2013

評 Programming in Python 3: A Complete Introduction to the Python Language (2nd Edition)

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 都有介紹到

No comments:

Post a Comment