首页 >后端开发 >Python教程 >Python 的 For 循环很糟糕——这正是我们喜欢它的原因

Python 的 For 循环很糟糕——这正是我们喜欢它的原因

DDD
DDD原创
2025-01-12 08:07:41573浏览

Python Sucks at For Loops – And That’s Exactly Why We Love It

Python,编程语言界的优雅猫咪:独立、精巧,看似不需要你,直到它真的需要你为止。这种特质在它的for循环中体现得淋漓尽致,它能让你瞬间感觉自己既是天才又是白痴。

Python的for循环并非不好,而是太擅长假装比你更懂

  1. Python之禅:“少做点事,傻瓜”

大多数编程语言的for循环都很直观。想数到10?没问题,给你一堆样板代码让你感觉自己很聪明。

C语言的写法:

<code class="language-c">for (int i = 0; i < 10; i++) {
    printf("%d\n", i);
}</code>

简洁、可预测、尊重你的智商。

而Python则说:

“干嘛费力定义i,指定范围,或者进行基本的算术运算?我直接把所有东西都摆在你面前,让你体验一下冒牌程序员的感觉。”

Python的版本:

<code class="language-python">for i in range(10):
    print(i)</code>

就是这样。无需声明,无需大括号,只有“氛围”。Python的for循环太简单了,以至于感觉有点不对劲儿。


  1. Python不止于此:它想让你更少做事

假设你有一个水果列表,想打印出来。

C语言版本(再次强调,很尊重人):

<code class="language-c">char* fruits[] = {"apple", "banana", "cherry"};
for (int i = 0; i < 3; i++) {
    printf("%s\n", fruits[i]);
}</code>

Python版本:

<code class="language-python">fruits = ["apple", "banana", "cherry"]
for fruit in fruits:
    print(fruit)</code>

注意到什么了吗?Python甚至懒得给你索引。它像飞盘一样直接把整个元素扔给你,然后说:“拿着,自己处理吧。”

你想通过手动索引列表来显示你的聪明才智?太可惜了。Python已经知道你想要什么,并直接喂给你。


  1. 列表推导式:for循环的终结者

Python的列表推导式是for循环的坟墓。

想创建一个新列表,其中每个数字都是原来的两倍?在其他任何语言中,这都需要3到4行代码。Python则轻松地展示了它的单行代码技巧:

<code class="language-python">doubled = [x * 2 for x in range(10)]</code>

这不仅高效,还会让你感觉自己是在用某种秘密编程语言写代码,凡人永远无法理解。但代价是:你的for循环现在看起来像神秘的填字游戏。

示例:

<code class="language-python">results = [f"Employee-{i}" for i in range(10) if i % 2 == 0]</code>

恭喜你!你刚刚写了一行代码,两周后连你自己都不懂它是什么意思。


  1. “让我们为了好玩而破坏东西”

Python的for循环也喜欢以微妙的方式背叛你。这是一个经典错误:

意外的变量覆盖

<code class="language-c">for (int i = 0; i < 10; i++) {
    printf("%d\n", i);
}</code>

等等,什么?我们不是把所有东西都替换成“pineapple”了吗?不!Python在角落里偷笑,因为fruit只是一个临时变量。实际列表没有被修改。

与此同时,JavaScript开发者则在暗自窃笑,因为他们知道可以用变量作用域问题来搞垮整个生产系统。


  1. enumerate:我们不配拥有的MVP

有时候,你既需要索引又需要值。Python本可以像其他语言一样让你使用无聊的i。但它却给了你enumerate(),这听起来更像是一个公司术语,而不是一个编程函数。

<code class="language-python">for i in range(10):
    print(i)</code>

“enumerate”。真的吗?Python,这不是董事会会议。放松点。


  1. Python循环突然…停止工作

想在循环遍历列表的同时修改它?Python会面无表情地看着你,然后说:

“你想多了。”

示例:

<code class="language-c">char* fruits[] = {"apple", "banana", "cherry"};
for (int i = 0; i < 3; i++) {
    printf("%s\n", fruits[i]);
}</code>

现在列表中缺少元素,因为Python中途迷路了。如果Python是一个服务员,这就相当于在你还没吃完之前就把你的桌子清理干净了。


  1. 不是无限循环的无限循环

尝试在Python中编写一个经典的无限循环。你知道的,为了好玩。以下是C语言的写法:

<code class="language-python">fruits = ["apple", "banana", "cherry"]
for fruit in fruits:
    print(fruit)</code>

以下是Python的版本:

<code class="language-python">doubled = [x * 2 for x in range(10)]</code>

它确实有效,但感觉很奇怪。Python甚至都没有尝试去模仿一个经典的无限循环。它只是一个……无尽的真理。


结论:Python的for循环并没有很糟糕——是我们自己不行

事实是,Python的for循环并没有那么糟糕。只是我们自己被宠坏了。Python的循环非常直观、简洁且强大,以至于我们忘记了手动跟踪索引或处理段错误的痛苦。

所以,下次你抱怨Python的for循环时,记住这一点:Python并没有很糟糕。它只是厌倦了牵着你的手。

以上是Python 的 For 循环很糟糕——这正是我们喜欢它的原因的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn