2.7 Formatage du code
Objectifs d'apprentissage
À la fin de cette section, vous devriez être capable de :
- Identifier l'espacement approprié pour les expressions et les instructions.
- Écrire des instructions multilignes en utilisant la jointure implicite de lignes.
Espacement recommandé
La plupart des espaces dans le code Python sont ignorés lors de l'exécution des programmes ; cependant, les espaces en début de ligne sont très importants. Les deux programmes suivants sont équivalents :
- Bon espacement :
name = input("Enter someone's name: ") place = input("Enter a famous place: ") print(name, "should visit", place + "!") - Mauvais espacement :
name=input ("Enter someone's name: " ) place =input("Enter a famous place: ") print( name,"should visit" , place+ "!")
On pourrait faire valoir que les espaces manquants ou superflus n'ont pas d'importance. Après tout, les deux programmes ci-dessus s'exécutent exactement de la même manière. Cependant, la version avec un « mauvais espacement » est plus difficile à lire. Un code tel que name=input et place+ peut prêter à confusion.
Les bons programmeurs écrivent du code aussi facile à lire que possible. De cette façon, les autres programmeurs sont plus susceptibles de comprendre le code. Pour encourager la cohérence, la communauté Python dispose d'un ensemble de recommandations concernant l'emplacement des espaces et des lignes vides, le nommage des variables, la façon de scinder les longues lignes et d'autres sujets importants.
Guide de style Python
PEP 8 est le guide de style officiel de Python. PEP signifie Python Enhancement Proposal. Les membres de la communauté Python rédigent des PEP pour documenter les meilleures pratiques et proposer de nouvelles fonctionnalités. Le tableau ci-dessous est basé sur les recommandations de la PEP 8 sous la rubrique Whitespace in Expressions and Statements.
| Recommandation | Exemple | Erreurs courantes |
|---|---|---|
| Parenthèses : aucun espace avant ou après. |
|
|
| Virgules : aucun espace avant, un espace après. |
|
|
Affectation : un espace avant et après le |
|
|
Concaténation : un espace avant et après le |
|
|
| Arithmétique : utiliser des espaces pour indiquer une priorité plus basse. |
|
|
Concepts en pratique
Espacement recommandé
Concaténation automatique
Les longues chaînes de caractères rendent les programmes Python difficiles à lire. Ex. : ce programme affiche la première phrase de la Déclaration d'indépendance des États-Unis :
print("The unanimous Declaration of the thirteen united States of America, When in the Course of human events, it becomes necessary for one people to dissolve the political bands which have connected them with another, and to assume among the powers of the earth, the separate and equal station to which the Laws of Nature and of Nature's God entitle them, a decent respect to the opinions of mankind requires that they should declare the causes which impel them to the separation.")
La PEP 8 recommande que chaque ligne de code comporte moins de 80 caractères. Ainsi, les programmeurs n'ont pas besoin de faire défiler horizontalement pour lire le code. Le programme ci-dessus peut être réécrit en divisant la chaîne d'origine :
print("The unanimous Declaration of the thirteen united States of "
"America, When in the Course of human events, it becomes "
"necessary for one people to dissolve the political bands "
"which have connected them with another, and to assume among "
"the powers of the earth, the separate and equal station to "
"which the Laws of Nature and of Nature's God entitle them, a "
"decent respect to the opinions of mankind requires that they "
"should declare the causes which impel them to the separation.")
Pour des raisons pratiques, Python concatène automatiquement plusieurs chaînes de caractères. L'opérateur + n'est pas nécessaire dans cette situation.
Concepts en pratique
Concaténation de littéraux de chaînes
Instructions multilignes
La plupart des instructions d'un programme Python ne nécessitent qu'une seule ligne de code. Mais occasionnellement, des instructions plus longues doivent s'étendre sur plusieurs lignes. Python propose deux manières d'écrire des instructions multilignes :
La jointure explicite de lignes, à l'aide de caractères
\:decl = "The unanimous Declaration of the thirteen united States of " \ "America, When in the Course of human events, it becomes " \ "necessary for one people to dissolve the political bands..."La jointure implicite de lignes, à l'aide de parenthèses :
decl = ("The unanimous Declaration of the thirteen united States of " "America, When in the Course of human events, it becomes " "necessary for one people to dissolve the political bands...")
La jointure implicite de lignes est plus courante, car de nombreuses instructions et expressions utilisent déjà des parenthèses. La PEP 8 recommande d'éviter autant que possible l'utilisation de la jointure explicite de lignes.
Concepts en pratique
Instructions multilignes
À vous d'essayer
Bien espacé
Le code suivant fonctionne correctement mais est mal formaté. En particulier, le code ne comporte pas les espaces recommandés par la PEP 8. De plus, deux des lignes comportent environ 90 caractères. Reformatez le code pour suivre les recommandations de cette section. Veillez à ne pas modifier le comportement du code lui-même.
À vous d'essayer
Cinq citations
Écrivez un programme qui affiche les cinq citations suivantes (source : BrainyQuote) de Guido van Rossum, le créateur de Python. Votre programme doit comporter exactement cinq instructions print, une pour chaque citation :
1. "If you're talking about Java in particular, Python is about the best fit you can get amongst all the other languages. Yet the funny thing is, from a language point of view, JavaScript has a lot in common with Python, but it is sort of a restricted subset."
2. "The second stream of material that is going to come out of this project is a programming environment and a set of programming tools where we really want to focus again on the needs of the newbie. This environment is going to have to be extremely user-friendly."
3. "I have this hope that there is a better way. Higher-level tools that actually let you see the structure of the software more clearly will be of tremendous value."
4. "Now, it's my belief that Python is a lot easier than to teach to students programming and teach them C or C++ or Java at the same time because all the details of the languages are so much harder. Other scripting languages really don't work very well there either."
5. "I would guess that the decision to create a small special purpose language or use an existing general purpose language is one of the toughest decisions that anyone facing the need for a new language must make."
Remarquez que toutes ces lignes comportent plus de 80 caractères et que certaines contiennent des guillemets simples (apostrophes). Formatez le code en utilisant des instructions multilignes et des séquences d'échappement si nécessaire.