Quel est le but des deux points avant un bloc en Python?
Exemple:
if n == 0:
print "The end"
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 blocage est terminé. Cependant, sur la base du Python koan «explicite vaut mieux qu'implicite» (EIBTI), je crois que Guido a délibérément rendu le côlon obligatoire, donc toute instruction qui devrait être suivie d'un code en retrait se termine par un colon. (Il autorise également les one-liners si vous continuez après les deux points, mais ce style n'est pas largement utilisé.)
Cela facilite également le travail des éditeurs à auto-indentation sensibles à la syntaxe, ce qui est également pris en compte dans la décision.
Cette question s'avère être un Python FAQ , et j'ai trouvé une de ses réponses par Guido ici :
Pourquoi les deux-points sont-ils nécessaires pour les instructions if/while/def/class?
Les deux points sont principalement nécessaires pour améliorer la lisibilité (l'un des résultats du langage expérimental ABC). Considère ceci:
if a == b print a
contre
if a == b: print a
Remarquez comment le second est légèrement plus facile à lire. Notez de plus comment deux points génèrent l’exemple dans cette réponse FAQ; c’est une utilisation standard en anglais.
Une autre raison mineure est que les deux points facilitent la tâche des éditeurs avec la coloration syntaxique; ils peuvent rechercher des colons pour décider du moment où l'indentation doit être augmentée au lieu de devoir analyser plus en détail le texte du programme.
Considérez la liste suivante de choses à acheter à l'épicerie, écrite en Pewprikanese.
pewkah
lalala
chunkykachoo
pewpewpew
skunkybacon
Quand je lis cela, je suis confus. Le chunkykachoo et le pewpewpew sont-ils une sorte de lalala? Ou que se passe-t-il si chunkykachoo et pewpewpew sont mis en retrait simplement parce qu'ils sont des objets spéciaux?
Maintenant, voyez ce qui se passe lorsque mon ami pewprikanais ajoute un colon pour m'aider à mieux analyser la liste: (<- like this)
pewkah
lalala: (<-- see this colon)
chunkykachoo
pewpewpew
skunkybacon
Maintenant, il est clair que le chunkykachoo et le pewpewpew sont une sorte de lalala.
Supposons qu'une personne commence à apprendre Python, qui est son premier langage de programmation à apprendre. Sans les deux points, il est fort probable qu'elle continue de penser "ces lignes sont en retrait, car elles ressemblent à des éléments spéciaux", et il faudra peut-être un certain temps pour comprendre que ce n'est pas la meilleure façon de penser à l'indentation.
Trois raisons:
Autant que je sache, il est délibéré que le lecteur doit s'attendre à une indentation après les deux points.
Cela rend aussi possible des constructions comme celle-ci:
if expression: action()
code_continues()
Notez (comme un commentateur) que ce n’est pas exactement le standard en or brillant d’un bon style Python. Il serait bien mieux d’avoir un blanc, là:
if expression: action()
code_continues()
pour éviter la confusion. Je voulais simplement préciser, avec le premier exemple, qu’il est possible d’écrire ainsi, car le code pour la variable if
qui suit immédiatement les deux points permet au compilateur de comprendre que la ligne suivante devrait pas être en retrait.
Selon Guido Van Rossum, l'inventeur de Python, l'idée d'utiliser un colon pour rendre la structure plus apparente est inspirée d'expériences antérieures avec un prédécesseur de Python, le langage ABC, qui ciblait également les débutants. Apparemment, lors de leurs premiers tests, les apprenants débutants ont progressé plus rapidement avec deux points que sans eux. Lisez l’ensemble de l’histoire sur le blog d’histoire post-python de Guido.
http://python-history.blogspot.com/2009/02/early-language-design-and-development.html
Et oui, le côlon est utile dans les doublures et est moins agaçant que le point-virgule. Aussi, guide de style pour la pause recommandée de longue date sur plusieurs lignes uniquement lorsque celle-ci se termine par un opérateur binaire
x = (23 +
24 +
33)
L'ajout d'une déclaration composée faite de deux points a le même aspect pour une plus grande uniformité de style.
Il existe un codage «sans colon» pour CPython et un dialecte sans colon, appelé Cobra. Ceux-ci n'ont pas ramassé.