Re: [閒聊] Zen of Python

作者: uranusjr (←這人是超級笨蛋)   2021-01-18 13:45:11
這應該是 Zen of Python 裡最常被誤解的一句
首先這句話裡寫 obvious way 代表不是只能有一個方法
而是希望能夠在設計中針對特定語境, 設計最適合的介面
也就是設計時應該先有應用例, 再根據應用方法設計合適的介面
而非先確定介面, 才在想辦法把各種應用塞進介面中
很多人會用這句話來背書, 覺得某件事已經可以用 A 方法寫, 所以不該有 B
然而每個應用中最合適的 semantic 並不永遠一樣
而在 semantic 不同的前提下, 即使實作完全相同, 有複數寫法也仍然可能是好設計
這同時也代表設計時不應該為了滿足這句話, 而刻意排除邏輯上合理的介面
最後, 這句話必須和下一句一起看
Although that way may not be obvious at first unless you're Dutch.
什麼才是 obvious way 是非常因人而異的東西
所以介面設計時必須能說服作者自己, 而非滿足教條
即使作者的想法與你不同, 也絕對不代表設計出來的就有問題
只要有一致性, 能夠自圓其說, 就是合理的設計
※ 引述《IcecreamHsu ()》之銘言:
: Zen of Python 13th
: https://www.python.org/dev/peps/pep-0020/
: There should be one—and preferably only one—obvious way to do it.
:
: 好奇大家怎麼看這句話的?
: 對我來說,Python 添加了太多語法糖
: 使得老手和新手寫的 code 品質落差相當大
: 例如迴圈可以用標準的 for,也可以用 list comprehension 來完成
: 或是 a is b 可以用 id(a) == id(b) 來替代
: (更不用說太多新手搞不清楚 == 和 is 的差別
: 總之,看到 Zen of python 這句話覺得有些困惑
: 也許在那個年代(2000年前後) Python 相較其他語言的確是這樣
: 但是在現在這時代 雖然我會的語言也不多 但 Go 絕對是比 Python 要更明確吧
: 沒有要在 Python 板黑 Python 的意思XD
: 只是覺得 Zen of python 好像不那麼符合現在 Python 的哲學
: (其他句我也覺得有點問題,但只挑一句來討論)
: 我的話會覺得現代的 Python 比較是海納百川
: 沒有什麼特色,但是就能滿足所有人的需求
: 所以大家都願意用 Python 並拿 Python 來溝通
: 好奇大家對 Python 的語言本身 有什麼想法嗎
作者: Sunal (SSSSSSSSSSSSSSSSSSSSSSS)   2021-01-19 22:06:00
推一下
作者: ToastBen (吐司邊)   2021-01-21 00:55:00

Links booklink

Contact Us: admin [ a t ] ucptt.com