写代码有很多细节,但是多数时候我们按照惯例——大多数优秀软件的写作风格就可以了。
Python是一种风格没有太多流派的语言。
关于字典的遍历。我见过好几种。真实经历中也发生了一些不愉快的争执。
比如我写这样的字典遍历
for key in d:
....
其实是很普遍的写法。
曾经遇到过一些资深的老人,他们认为“不清晰”,可读性差,硬杠要改成
for key in d.keys():
...
这种追求所谓可读性,你又如何反驳,没有什么理由——但是我们在优秀的代码库中,确实发现很多简洁,一眼看懂的代码——lambda 表达式,闭包。
while else ; for else 这样的结构。
还有一些令人颇感疑惑的装饰器——比如 attr.s()
可读性到底是什么?没有太多的标准,但是经常会被一些老资历的的人用在他批评没见过,或者不喜欢的代码场景中,让人感觉有点遗憾……
另外字典的迭代还有直接取key ,value值的
应该是这样
for k, v in d.items():
...
高效简洁。但是写成这样应该也可以工作
for k in d:
k, d[k]
效率上,多了一次存取。
还有一些 for k, v in list(d.items()): 属于有点荒唐了。
我个人绝对倾向用 for k in d: 代替 for k in d.keys().
虽然本质区别不大,但是简洁优雅,符合 python推崇的编码理念。
如果要说这样不清晰,那是因为你对 for k in d: 的语义没有习惯。
可读性差,是歧义和不明确带来的,而不是简洁带来的。
一种符号如果能用最少的字符表达确切的含义,为什么不使用它呢?