page contents

你写的Python代码还是Pythonic代码?

如果你是编程新手,尤其是 Python 新手,你可能听说过 Pythonic 这个词在各种技术会议和公司中经常被提起,你可能还想知道为什么有这个术语?所以这篇文章我们将了解 Pythonic 一词的含义,以及为什么你应该对学习如何不仅编写 Python 代码感兴趣,而且还要编写 Pythonic 代码。

attachments-2026-08-yC9CS9cq6a7297ce3dd43.png如果你是编程新手,尤其是 Python 新手,你可能听说过 Pythonic 这个词在各种技术会议和公司中经常被提起,你可能还想知道为什么有这个术语?所以这篇文章我们将了解 Pythonic 一词的含义,以及为什么你应该对学习如何不仅编写 Python 代码感兴趣,而且还要编写 Pythonic 代码。

Pythonic 是什么意思?

当人们谈论 Pythonic 代码时,他们的意思是代码很好地使用了 Python 习语,它是自然的或在语言中表现出流利程度,换句话说,它意味着 Python 社区采用的最广泛采用的习语,如果有人说你正在编写非 Python 代码,他们实际上可能意味着你正在尝试用 Python 编写 Java/C++ 代码,而忽略 Python 习语,而不是从其他语言的习语翻译,如果现在你已经对 Pythonic(和非 Pythonic)的含义有了一个理论上的了解,让我们来看看实践中的一些 Pythonic 代码。

编写 Pythonic 代码在我们进入一些示例之前,你可能想知道是否存在编写 Pythonic 代码的已定义方式/方法,实际上是有的,它被称为 PEP 8,它是 Python 的官方风格指南。

示例 #1

x=[1, 2, 3, 4, 5, 6]

result= []

foridxinrange(len(x));

result.append(x[idx] *2)

result

Output: [2, 4, 6, 8, 10, 12]

考虑上面的代码,你试图将一些元素“x”乘以 2。

所以,我们在这里所做的是,我们创建了一个空列表来存储结果, 然后,我们会将计算的解决方案附加到结果中, 结果现在包含一个函数,该函数是 2 乘以每个元素。

现在,如果你要以 Pythonic 方式编写相同的代码,你可能只想简单地使用列表推导式, 就是这样:

x=[1, 2, 3, 4, 5, 6]

[(element*2) forelementinx]

Output: [2, 4, 6, 8, 10]

你可能已经注意到,我们跳过了整个 for 循环!

 

示例 #2

让我们让前面的例子更复杂一些,并设置一个条件,即只有元素是偶数时才应该乘以 2。

x=[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

result= []

foridxinrange(len(x));

ifx[idx] %2==0;

result.append(x[idx] *2)

else;

result.append(x[idx])

result

Output: [1, 4, 3, 8, 5, 12, 7, 16, 9, 20]

我们实际上已经创建了一个 if else 语句来解决这个问题,但是有一种更简单的 Pythonic 方式来处理事情。

[(element*2ifelement%2==0elseelement) forelementinx]

Output: [1, 4, 3, 8, 5, 12, 7, 16, 9, 20]

如果你注意到我们在这里所做的,除了跳过多行代码之外,我们在同一个句子中使用了 if-else 语句, 现在,如果你想执行过滤,你可以这样做:

x=[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

[element*2forelementinxifelement%2==0]

Output: [4, 8, 12, 16, 20]

我们在这里所做的是将 if 语句放在 for 声明之后,这样我们已经实现了过滤。

如果你使用像 Jupyter Notebooks 或 PyCharm 这样的优秀 IDE,它们将帮助你按照 PEP 8 建议格式化你的代码。

为什么要编写 Pythonic 代码?

首先,你可以节省大量编写大量啰嗦代码的时间,因此你显然正在成为一个更聪明、更有效率的程序员,使用惯用的 Pythonic 代码,你可以提高程序的速度,此外,对于使用相同代码的其他开发人员来说,惯用代码更容易理解和理解,当你试图重构别人的代码时,它会很有帮助。

害怕 Pythonic?

我并不是说Pythonic 本身很可怕,相反,相当多的开发人员和组织已经开始根据某人是否可以编写 Pythonic 代码来进行区分,这是错误的,因为归根结底,尽管 PEP 8 存在,但 Pythonic 一词的概念对于不同的人来说是不同的,对某些人来说,这可能意味着选择新的风格指南并改进你的编码方式,对其他人来说,这可能意味着简洁而不重复。

建议不要再判断人们是否可以编写 Pythonic 代码了,相反,我们应该根据实际情况让代码更可读、简洁和易于维护。

更多相关技术内容咨询欢迎前往并持续关注好学星城论坛了解详情。

想高效系统的学习Python编程语言,推荐大家关注一个微信公众号:Python编程学习圈。每天分享行业资讯、技术干货供大家阅读,关注即可免费领取整套Python入门到进阶的学习资料以及教程,感兴趣的小伙伴赶紧行动起来吧。

attachments-2022-05-rLS4AIF8628ee5f3b7e12.jpg

 

  • 发表于 2026-08-05 09:54
  • 阅读 ( 35 )
  • 分类:Python开发

你可能感兴趣的文章

相关问题

0 条评论

请先 登录 后评论
Pack
Pack

2307 篇文章

作家榜 »

  1. 轩辕小不懂 2403 文章
  2. Pack 2307 文章
  3. 小柒 2228 文章
  4. Nen 576 文章
  5. 王昭君 209 文章
  6. 文双 71 文章
  7. 小威 64 文章
  8. Cara 36 文章