pythonic是什么意思?

在很多网站上,我经常看到代码不是py pyonic的评论,或者是为了实现相同的目标而采取更为pythonic的方式。

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

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

不pythonic时

 for x in list: doSomething(x) 

是pythonic?

利用Python语言的特性来生成清晰,简洁和可维护的代码。

Pythonic是指不仅能正确使用语法的代码,而且还遵循Python社区的约定,并按照打算使用的方式使用该语言。

这可能是最容易解释的负面例子,如在其他答案的链接文章。 unpythonic代码的例子通常来自其他语言的用户,而不是学习Python编程模式(如列表parsing或生成器expression式),试图在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() 

或者甚至是一个生成器expression式

 (i.some_attribute for i in items) 

所以,基本上当有人说某些东西是非音素的时候,他们说这些代码可以用更适合Python编码风格的方式重写。

在命令行import this命令可以给出Python原理的总结。 鲜为人知的是, import this源代码是明智的,并通过devise,unpythonic! 看一看它不能做什么的例子。