作者uranusjr (←这人是超级笨蛋)
看板Python
标题Re: [翻译] Google 建议的 Python 风格指南 7
时间Wed May 1 23:28:23 2013
※ 引述《sandwichC (没回应=挂站)》之铭言:
1F:推 ya790206:有人觉得 list comprehension 违反 There should be one- 05/01 23:06
2F:→ ya790206:There should be one-- and preferably only one --obvio 05/01 23:06
3F:→ ya790206:--obvious way to do it. 规则吗? 我觉得现在python 有 05/01 23:07
4F:→ ya790206:太多方法可以去作同一件事。 05/01 23:08
List comprehension 和 for 回圈其实是不一样的东西
因为它是产生一个 generator 去跑
真正比较像的是 itertools 里面的功能
至於它们同时存在有没有违反前面的原则嘛, 我觉得是还好
itertools 完全有其存在必要, 因为用 for 跑大量物件转换的速度真的差太多了
为了钻牛角尖而牺牲这麽明显的效能实在不合理
而 list comprehension 在轻量应用上的简洁性又大胜 itertools
为了产生一个可以 iterate 的东西就要写一个完整的 generator 也太多余
我个人是认为, 虽然这三个东西的「结果」一样, 但是达到的「目标」其实不一样
所以其实不算违反上述规则
况且 PEP8 也说要 know when to be inconsistent
即使它们真的重复, 也拥有非常充分的理由
当然其实 Python 现在真的有些地方违反这条规则
不过其实这些大部份都是历史共业, 基本上 Python 社群都会特别推荐其中一种
例如 string formation 就会推荐 str.format 而非 % syntax
可以用 urllib2 就不要用 urllib
如果真的想达到整数无条件舍去除法应该用 // 而非 /
它们确实违反了规则, 但那是因为新的比较好
只是为了维持起码的向後支援, 现在还不能完全把旧的砍掉
这也是为什麽 Py3K 会是现在的样貌
真要说的话 range 和 xrange 功能也算是重复了
更何况字串可以单引号也可以双引号这不就重复了吗XD
--
"问おう、贵方が私のマスターか?"
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 114.32.81.146
※ 编辑: uranusjr 来自: 114.32.81.146 (05/01 23:36)
5F:推 darkgerm:推~ 3 就是为了摆脱旧包伏才会不相容的 05/01 23:49
6F:推 ck574b027:字串这样可以放引号不用escape啊 05/02 15:07