pythonic是什么意思?

Jon*_*Jon 71 python

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

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

while i < someValue:
   do_something(list[i])
   i += 1
Run Code Online (Sandbox Code Playgroud)

不是pythonic而是

for x in list:
   doSomething(x)
Run Code Online (Sandbox Code Playgroud)

是pythonic?

Jam*_*mes 77

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

Pythonic意味着代码不仅能够正确地获得语法,而且还遵循Python社区的惯例,并以预期的方式使用语言.

这可能是最容易用负面的例子来解释,就像其他答案的链接文章一样.unpythonic代码的例子通常来自其他语言的用户,他们不是学习Python编程模式(如列表推导或生成器表达式),而是试图在C或java中更常用的模式中删除.循环是特别常见的例子.

例如在Java中我可能会使用

for i in (i; i < items.length ; i++)
 {
  n = items[i];
 ... now do something
 }
Run Code Online (Sandbox Code Playgroud)

在Python中,我们可以尝试使用while循环复制它,但使用它会更干净

for i in items:
  i.perform_action()
Run Code Online (Sandbox Code Playgroud)

或者,甚至是生成器表达式

(i.some_attribute for i in items)
Run Code Online (Sandbox Code Playgroud)

因此,当有人说某些东西是单声道时,他们说的是代码可以用更适合蟒蛇编码风格的方式重写.

import this在命令行输入可以概括Python原理.鲜为人知的是,源代码import this是明确的,并且通过设计,unpythonic!看看它是一个不该做的例子.

  • 顺便说一下,"导入这个"的源代码在这里:https://github.com/python/cpython/blob/master/Lib/this.py (15认同)
  • 我想我应该在这里留下评论给我的用户名 (10认同)
  • 对于一些更复杂的代码的示例,在此答案中,Vigenere 密码的“非pythonic”实现逐渐变得更加“pythonic”(披露:我的代码和意见):/sf/ask/174323411/ -way-to-encode-a-string-according-to-a-password/46854931#46854931 (2认同)
  • 也许还值得注意的是[通用术语是“惯用的”](/sf/ask/5887171/#84270) (2认同)
  • 谢谢@LouisMaddox;)我来这里寻找这个术语(惯用语),因为我忘记了正确的词;并没有失望:) (2认同)