pythonic是什么意思?

时间:2014-07-29 08:26:11

标签: python

在许多网站上,我经常看到代码不是pythonic的评论,或者有更多的pythonic方式来实现相同的目标。

pythonic在这种情况下意味着什么?例如,为什么

while i < someValue:
   do_something(list[i])
   i += 1

不是pythonic而

for x in list:
   doSomething(x)

是pythonic?

1 个答案:

答案 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!看看它是一个不该做的例子。