在许多网站上,我经常看到代码不是pythonic的评论,或者有更多的pythonic方式来实现相同的目标。
pythonic在这种情况下意味着什么?例如,为什么
while i < someValue:
do_something(list[i])
i += 1
不是pythonic而
for x in list:
doSomething(x)
是pythonic?
答案 0 :(得分:64)
利用Python语言的功能来生成清晰,简洁和可维护的代码。
Pythonic意味着代码不仅仅是正确的语法,而是遵循Python社区的惯例,并以预期的方式使用语言。
这可能是最容易通过反面例子来解释,就像其他答案的链接文章一样。 unpythonic代码的例子通常来自其他语言的用户,他们不是学习Python编程模式(如列表推导或生成器表达式),而是试图在C或java中更常用的模式中删除。循环是特别常见的例子。
例如在Java中我可能会使用
for i in (i; i < items.length ; i++)
{
n = items[i];
... now do something
}
在Python中,我们可以尝试使用while循环复制它,但使用
会更清晰for i in items:
i.perform_action()
或者,甚至是生成器表达式
(i.some_attribute for i in items)
所以基本上当有人说某些东西是单声道时,他们会说代码可以用更适合蟒蛇编码风格的方式重写。
在命令行键入import this
会提供Python原则的摘要。鲜为人知的是import this
的源代码是明确的,并且在设计上是unpythonic!看看它是一个不该做的例子。