86 votes

A quoi servent les deux points avant un bloc en Python ?

A quoi servent les deux points avant un bloc en Python ?

Exemple :

if n == 0:
    print "The end"

77voto

tzot Points 32224

Les deux points sont là pour déclarer le début d'un bloc en retrait.

Techniquement, ce n'est pas nécessaire ; vous pouvez simplement indenter et désindenter lorsque le bloc est terminé. Cependant, d'après le Koan du python "l'explicite est meilleur que l'implicite" (EIBTI), je crois que Guido a délibérément rendu les deux points obligatoires, de sorte que tout déclaration selon laquelle devrait être suivi d'un code indenté se terminant par deux points. (Il autorise également les codes à une ligne si vous continuez après les deux points, mais ce style n'est pas très utilisé).

Il facilite également le travail des éditeurs d'alinéas automatiques tenant compte de la syntaxe, ce qui a également pesé dans la décision.


Cette question s'avère être une FAQ Python et j'ai trouvé une de ses réponses par Guido. aquí :

Pourquoi les deux points sont-ils nécessaires pour les instructions if/while/def/class ?

Les deux points sont nécessaires principalement pour améliorer la lisibilité (un des résultats du langage expérimental ABC). Considérez ceci :

if a == b 
    print a

contre

if a == b: 
    print a

Remarquez que la seconde est légèrement plus facile à lire. Remarquez également que les deux points séparent l'exemple dans cette réponse à la FAQ ; il s'agit d'un usage standard en anglais.

Une autre raison mineure est que les deux-points facilitent la tâche des éditeurs dotés de la coloration syntaxique ; ils peuvent rechercher les deux-points pour décider quand l'indentation doit être augmentée au lieu de devoir effectuer une analyse plus élaborée du texte du programme.

28voto

Yoo Points 3276

Considérez la liste suivante de choses à acheter à l'épicerie, écrite en pewprikanais.

pewkah
lalala
    chunkykachoo
    pewpewpew
skunkybacon

Quand je lis ça, je suis confus. Est-ce que chunkykachoo et pewpewpew sont une sorte de lalala ? Ou si chunkykachoo et pewpewpew sont en retrait juste parce que ce sont des objets spéciaux ?

Maintenant, voyons ce qui se passe lorsque mon ami pewprikanais ajoute un deux-points pour m'aider à mieux analyser la liste : (<-- comme ceci)

pewkah
lalala:   (<-- see this colon)
    chunkykachoo
    pewpewpew
skunkybacon

Maintenant il est clair que chunkykachoo et pewpewpew sont une sorte de lalala.

Imaginons qu'une personne commence à apprendre Python, qui se trouve être son premier langage de programmation à apprendre. Sans les deux-points, il y a une forte probabilité qu'elle continue à penser "ces lignes sont indentées parce que ces lignes sont comme des éléments spéciaux", et cela pourrait lui prendre un certain temps pour réaliser que ce n'est pas la meilleure façon de penser l'indentation.

18voto

Ryan Points 7423

Trois raisons :

  1. Pour améliorer la lisibilité. Les deux points aident le code à s'intégrer dans le bloc en retrait suivant.
  2. Pour aider les éditeurs de texte/IDE, ils peuvent automatiquement indenter la ligne suivante si la ligne précédente se terminait par un deux-points.
  3. Pour rendre l'analyse syntaxique par python légèrement plus facile.

8voto

unwind Points 181987

Pour autant que je sache, c'est une conception intentionnelle pour rendre plus évident le fait que le lecteur doit s'attendre à une indentation après les deux points.

Elle rend également possible des constructions comme celle-ci :

if expression: action()
code_continues()

Notez (comme l'a fait un commentateur) que ce n'est pas exactement l'étalon-or brillant du bon style Python. Il serait bien mieux d'avoir un blanc, là :

if expression: action()

code_continues()

pour éviter toute confusion. Je voulais simplement préciser, avec le premier exemple, qu'il est possible d'écrire de cette manière, puisque le fait d'avoir le code de la fonction if qui suit immédiatement le deux-points permet au compilateur de comprendre que la ligne suivante doit pas être en retrait.

5voto

Serge Points 1514

Selon Guido Van Rossum, l'inventeur de Python, l'idée d'utiliser les deux points pour rendre la structure plus apparente s'inspire d'expériences antérieures avec un prédécesseur de Python, le langage ABC, qui visait également les débutants. Apparemment, lors de leurs premiers tests, les apprenants débutants ont progressé plus rapidement avec les deux points que sans eux. Lisez toute l'histoire sur le blog de Guido sur l'histoire de Python.

http://python-history.blogspot.com/2009/02/early-language-design-and-development.html

Et oui, les deux points sont utiles dans les phrases d'une ligne et sont moins gênants que le point-virgule. De même, le guide de style a longtemps recommandé la rupture sur plusieurs lignes uniquement lorsqu'elle se termine par un opérateur binaire.

x = (23 + 
     24 + 
     33)

L'ajout des deux-points a permis d'uniformiser le style de l'énoncé composé.

Il existe un encodage "sans colonne" pour CPython ainsi qu'un dialecte sans colonne, appelé cobra. Ceux-ci n'ont pas été détectés.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X