python - Pythonic 是什么意思?

标签 python

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

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

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

不是 Pythonic 而

for x in list:
   doSomething(x)

是 Pythonic 的吗?

最佳答案

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

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

这可能是最容易用反面例子来解释的,就像其他答案中的链接文章一样。非 Pythonic 代码的示例通常来自其他语言的用户,他们没有学习 Python 编程模式(如列表推导或生成器表达式),而是试图破解 C 或 Java 中更常用的模式。循环是这方面特别常见的例子。

例如,在 Java 中我可能会使用

for(int index=0; index < items.length; index++) {
     items[index].performAction();
}

在 Python 中,我们可以尝试使用 while 循环来复制它,但使用起来会更简洁:

for item in items:
  item.perform_action()

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

(item.some_attribute for item in items)

所以本质上,当有人说某些东西不是 Pythonic 时,他们是在说可以以更适合 Python 编码风格的方式重写代码。

在命令行输入 import this 可以总结 Python 的原理。鲜为人知的是,import this 的源代码显然是非 Python 的!看看它,看看不该做什么的例子。

关于python - Pythonic 是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25011078/

相关文章:

python - 类型错误 : bad operand type for unary ~: 'float' while groupby and apply a function

python - 尝试使用 pypi 进行命令行注册时出现 SSL 证书错误

java - 使用 Jython 访问 Java 中 Python 类的公共(public)属性

Python 值错误 : too many values to unpack (For loop with nested variable)

python 并在方法中使用 'self'

python - ImportError : No module named geoip2. 数据库

python - 解析数据框

python - 通过列表理解将 str.lower 应用到 Pandas

python - 有没有办法用 Python 原生解决方案替换 Django 的 smart_str?

Python 不可变类型 ids 和 is 语句