pythonic是什么意思?[关闭]


88

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

在这种情况下,pythonic是什么意思?例如,为什么

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

不是pythonic

for x in list:
   doSomething(x)

是pythonic吗?



这是一个离题的问题。您可能提供了一个小的代码示例,以使它更多地涉及主题。
ρss

Answers:


103

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

Pythonic意味着代码不仅会正确使用语法,而且会遵循Python社区的约定,并以预期使用的方式使用该语言。

这可能是最容易用否定的例子来解释的,如链接文章中其他答案所示。非Python代码的示例通常来自其他语言的用户,他们没有学习诸如列表理解或生成器表达式之类的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)

因此,从本质上讲,当有人说某些内容与Python无关时,他们就是说可以采用更适合python编码风格的方式来重写代码。

import this在命令行中键入可总结Python原理。鲜为人知的是,它的源代码import this是经过明确设计的,是非Python的!看看它是不执行操作的示例。


26
顺便说一句,“导入此”的源代码在这里:github.com/python/cpython/blob/master/Lib/this.py
Gautam

在不同领域中的例子是什么?喜欢做饭,设计,开车。
丹尼尔·斯普林格

2
(:我的代码和意见披露)对于一些更复杂的代码示例,“unpythonic”实施V @ genere加密在此答案由逐步更“Python的” stackoverflow.com/questions/2490334/...
尼克

17
我想我应该发表评论这里给我的用户名
Python的
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.