在许多网站上,我经常看到评论说代码不是 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/