Maison >développement back-end >Tutoriel Python >Python est nul avec les boucles For – et c'est exactement pourquoi nous l'aimons
Python, le chat élégant dans le monde des langages de programmation : indépendant, sophistiqué et qui n'a apparemment pas besoin de vous jusqu'à ce qu'il en ait vraiment besoin. Cette qualité se reflète le plus clairement dans sa boucle for, qui peut vous faire sentir à la fois un génie et un idiot en un instant.
Ce n’est pas que la boucle for de Python soit mauvaise, c’est juste qu’elle est trop douée pour faire semblant de savoir mieux que vous.
Les boucles For dans la plupart des langages de programmation sont intuitives. Voulez-vous compter jusqu'à 10 ? Pas de problème, donnez-vous un tas de codes passe-partout pour que vous vous sentiez intelligent.
Comment écrire en langage C :
<code class="language-c">for (int i = 0; i < 10; i++) { printf("%d\n", i); }</code>
Simple, prévisible et respectueux de votre QI.
Et Python dit :
"Pourquoi se donner la peine de définir i, de spécifier une plage ou de faire des calculs de base ? Je vais tout expliquer devant vous afin que vous puissiez découvrir ce que signifie être un faux programmeur."
Version Python :
<code class="language-python">for i in range(10): print(i)</code>
C'est tout. Pas de déclarations, pas d'accolades, juste une "ambiance". La boucle for de Python est si simple qu'elle semble un peu fausse.
Supposons que vous ayez une liste de fruits et que vous souhaitiez l'imprimer.
Version en langage C (encore une fois, très respectueux) :
<code class="language-c">char* fruits[] = {"apple", "banana", "cherry"}; for (int i = 0; i < 3; i++) { printf("%s\n", fruits[i]); }</code>
Version Python :
<code class="language-python">fruits = ["apple", "banana", "cherry"] for fruit in fruits: print(fruit)</code>
Avez-vous remarqué quelque chose ? Python ne prend même pas la peine de vous donner un index. Il vous lance simplement l'élément entier comme un frisbee et vous dit : « Tiens, prends-en soin
.Voulez-vous montrer votre ingéniosité en indexant manuellement une liste ? Quelle honte. Python sait déjà ce que vous voulez et vous le transmet directement.
La compréhension de liste de Python est la tombe des boucles for.
Vous voulez créer une nouvelle liste où chaque numéro est doublé ? Dans n’importe quelle autre langue, cela prendrait 3 à 4 lignes de code. Python démontre facilement ses compétences en codage sur une seule ligne :
<code class="language-python">doubled = [x * 2 for x in range(10)]</code>
Non seulement c'est efficace, mais cela vous donne également l'impression d'écrire du code dans un langage de programmation secret que les simples mortels ne comprendront jamais. Mais le coût est : Votre boucle for ressemble maintenant à un jeu de mots croisés énigmatique.
Exemple :
<code class="language-python">results = [f"Employee-{i}" for i in range(10) if i % 2 == 0]</code>
Félicitations ! Vous venez d’écrire une ligne de code et deux semaines plus tard vous ne savez même pas ce que cela signifie.
La boucle for de Python aime aussi vous trahir de manière subtile. C'est une erreur classique :
Remplacement de variable inattendu
<code class="language-c">for (int i = 0; i < 10; i++) { printf("%d\n", i); }</code>
Attends, quoi ? N'a-t-on pas tout remplacé par « ananas » ? Non! Python ricane dans le coin car fruit
n'est qu'une variable temporaire. La liste actuelle n'est pas modifiée.
Pendant ce temps, les développeurs JavaScript rient car ils savent qu'ils peuvent faire tomber des systèmes de production entiers avec des problèmes de portée variable.
Parfois, vous avez besoin à la fois d'un index et d'une valeur. Python aurait pu vous faire utiliser i
ennuyeux comme les autres langages. Mais cela vous donne enumerate(), qui ressemble plus à un terme d'entreprise qu'à une fonction de programmation.
<code class="language-python">for i in range(10): print(i)</code>
"énumérer". Vraiment? Python, ce n'est pas une réunion du conseil d'administration. Détendez-vous.
Vous souhaitez modifier une liste tout en la parcourant ? Python vous regardera d'un air vide et dira :
"Tu réfléchis trop."
Exemple :
<code class="language-c">char* fruits[] = {"apple", "banana", "cherry"}; for (int i = 0; i < 3; i++) { printf("%s\n", fruits[i]); }</code>
Il manque maintenant des éléments dans la liste car Python s'est perdu en cours de route. Si Python était serveur, cela équivaudrait à débarrasser votre table avant même de terminer votre repas.
Essayez d'écrire une boucle infinie classique en Python. Vous savez, pour le plaisir. Voici comment l'écrire en langage C :
<code class="language-python">fruits = ["apple", "banana", "cherry"] for fruit in fruits: print(fruit)</code>
Ce qui suit est la version Python :
<code class="language-python">doubled = [x * 2 for x in range(10)]</code>
Ça marche, mais ça fait bizarre. Python n'essaie même pas d'émuler une boucle infinie classique. C'est juste une... vérité infinie.
Conclusion : la boucle for de Python n'est pas mauvaise - C'est juste nous qui n'y parvenons pas
La vérité est que la boucle for de Python n'est pas si mauvaise. C’est juste que nous sommes nous-mêmes gâtés. Les boucles de Python sont si intuitives, concises et puissantes que nous oublions la difficulté du suivi manuel des index ou de la gestion des erreurs de segmentation.
Donc, la prochaine fois que vous vous plaindrez des boucles for de Python, rappelez-vous ceci : Python n'est pas terrible. C'est juste fatigué de te tenir la main.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!