Accès rapide :
La vidéo
Le concept de variable
Qu'est-ce qu'une variable ?
Définition de variables
La PEP 8 et les conventions de codage Python
Le concept de type de données
Qu'est-ce qu'un type de données ?
Préciser le type lors de la déclaration d'une variable
Bonne pratique de développement
Travaux pratiques
L'énoncé du TP
La correction
Cette vidéo vous présente quelques bonnes pratiques (PEP8 ...) à respecter lors de la définition de vos variables en Python.
Un programme informatique manipule souvent un très grand nombre d'informations. Imaginons, par exemple, un site de vente en ligne : celui-ci va donc devoir gérer les articles en vente sur ce site. Ce site de vente en ligne devrait aussi gérer les commandes de chaque utilisateur. Les articles, les commandes, les utilisateurs manipulés par ce programme sont appelés des données. Ces données sont stockées dans différents emplacements en mémoire.
La mémoire de votre ordinateur contient un très grand nombre de cases mémoire : on appelle chaque case mémoire un octet. D'où le fait qu'on quantifie la taille de la mémoire en Ko (kilooctet, soit 210 octets), en Mo (megaoctet, soit 210 Ko), en Go (gigaoctet, soit 210 Mo) ou encore to (teraoctect, soit 210 Go). Une donnée sera donc stockée dans la mémoire à partir d'un octet particulier et pourra occuper plusieurs octets consécutifs. On appelle une « adresse mémoire » le numéro de la case mémoire (sa position dans la mémoire) à partir de laquelle est stocké une donnée (une information). Il s'agit d'une valeur entière qui, vous le comprenez, peut être très grande.
Si vous utilisiez, avec un langage de programmation de très bas niveau, comme l'assembleur par exemple, vous devriez mémoriser les emplacements mémoire (les adresses mémoire) de chacune de vos données. Vous comprendrez alors aisément que l'exercice risque d'être véritablement compliqué.
C'est pour répondre à cette difficulté que les langages évolués proposent la notion de variable. Une variable est associée à une adresse mémoire, mais ce n'est plus vous qui gérerez cet aspect, ce sera l'environnement d'exécution Python. Une variable possède un nom, ce qui sera beaucoup plus facile à mémoriser et à utiliser. A condition, bien sûr, que vous ayez donné un nom pertinent à votre variable.
Je vous propose d'utiliser l'interpréteur interactif Python pour essayer de définir quelques premières variables. Pour ce faire, veuillez ouvrir l'interpréteur Python, comme montré dans les chapitres précédents. Retapez les lignes de code suivantes dans votre interpréteur.
>>> counter = 10 >>> message = "Bonjour à vous" >>> >>> print(counter) 10 >>> print(message) Bonjour à vous >>>
Afin de bien comprendre l'intérêt de chacune de vos variables, il est important de les nommer avec un nom parlant et explicite.
Ainsi, la première ligne de l'exemple proposé définit une variable counter
contenant la valeur d'un compteur hypothétique.
La seconde ligne définie une variable message
contenant un message textuel.
Comme le terme l'indique, une variable ça varie (ça change d'état) au fur et à mesure que le programme s'exécute. Continuez à taper les instructions suivantes.
>>> counter = counter + 1 >>> print(counter) 11 >>> counter += 1 >>> print(counter) 12 >>> message = "Nouveau contenu" >>> print(message) Nouveau contenu >>>
La première ligne de ce nouvel exemple, ajoute 1 à la valeur courante de la variable counter
.
La quatrième ligne en fait de même, mais avec une syntaxe plus compacte. Enfin, la ligne 7 vous montre comment changer la valeur du message.
Il y a quelques règles à respecter pour le choix des noms de vos variables. La plus importante des règles a déjà été énoncée : il faut choisir des noms parlants pour vos variables. Un bon programme doit avant tout être un programme qu'on comprend facilement et donc que l'on pourra faire évoluer facilement : le choix des noms de vos variables est très important de ce point de vue.
Ensuite, sachez que vous pourriez choisir n'importe quelles lettres pour constituer un nom de variable : y compris des lettres non latines. A titre, d'exemple, vous pouvez taper les lignes de code suivantes (copiez les à partir de cet exemple dans votre interpréteur Python).
>>> π = 3.141592654 >>> print(π) 3.141592654 >>>
Cependant, il est conseillé de ne pas le faire : la lettre π n'étant pas disponible sur des claviers non grecs. De même, je ne vous recommande pas d'utiliser un nom de variable avec des caractères accentués. Si vous décidez de partager vos codes en « open source » sur Internet, les personnes ne possédant pas de clavier français auront beaucoup de mal à faire évoluer votre programme.
En conséquence limitez-vous aux lettres ASCII. Vous pouvez aussi utiliser des chiffres et le caractère _ (underscore) dans vos noms de variables.
Attention, néanmoins à ne pas utiliser de chiffre en premier caractère d'un nom de variable (par exemple 3x
) : ce n'est pas autorisé.
Enfin, le langage Python définit un ensemble de conventions de codage. Certaines d'entre elles portent sur le nommage des éléments de votre programme. Ces conventions sont définies dans ce qu'on appelle la « PEP 8 ». Les plus curieux d'entre vous pourront consulter cette PEP 8 en consultant le lien suivant : https://www.python.org/dev/peps/pep-0008/
Cette PEP 8, n'est qu'une convention : si vous ne la respectez pas, votre programme fonctionnera tout de même. Mais il est fortement recommandé par les développeurs du langage de la respecter. Par rapport à nos variables, cette PEP indique qu'elles doivent être écrites en minuscules et si un nom de variable contient plusieurs mots alors ils devront être séparés par un caractère underscore. Voici extrait de cette fameuse PEP 8.
En conséquence les noms de variables précédemment proposés sont correctement écrits, au regard de la PEP 8.
Par contre, les noms de variables suivants ne sont pas recommandés : Counter
, firstValue
, MESSAGE
.
Certains IDE sont capables de vérifier le respect de ces conventions de codage. C'est notamment le cas de PyCharm, comme le montre cette nouvelle capture d'écran.
Maintenant que nous savons déclarer des variables, il faut qu'on parle de la notion de « type de données ». Le plus simple, pour comprendre cette notion, est de commencer à taper ces quelques lignes dans un interpréteur interactif Python.
>>> counter = 10 >>> type(counter) <class 'int'> >>> pi = 3.141592654 >>> type(pi) <class 'float'> >>> message = "Hello" >>> type(message) <class 'str'> >>> state = True >>> type(state) <class 'bool'> >>>
Comme vous le constatez, nous créons dans cet exemple quatre variables nommées respectivement counter
, pi
,
message
et state
. Chacune de ces variables contient une donnée différente et nous cherchons à en afficher son type.
On constate l'existence de quatre types de bases en Python : int
,
float
,
str
et
bool
.
Plusieurs variables peuvent avoir un même type de données. Un type de données, ou plus simplement un type, définit un ensemble de valeurs possibles
pour les variables qui sont basées sur lui. Ainsi, le type int
définit l'ensemble des entiers relatifs alors que le type str
représente l'ensemble des chaînes de caractères possibles.
De plus, en fonction du type considéré vous pourrait utiliser des opérateurs qui auront un comportement adapté à la nature des éléments manipulés. Tester, toujours dans l'interpréteur interactif, ces quelques lignes de code.
>>> a = 7 >>> b = 3 >>> result = a + b >>> print(result, type(result)) 10 <class 'int'> >>> >>> s1 = "Hello" >>> s2 = "World" >>> result = s1 + " " + s2 >>> print(result, type(result)) Hello World <class 'str'> >>>
La ligne 3 cherche à ajouter deux variables contenant chacune une valeur entière. En conséquence, l'opérateur +
effectue une addition
et calcule donc la valeur 10 elle-même de type int
.
La ligne 9, quant à elle cherche à appliquer l'opérateur +
sur des chaînes de caractères. C'est donc tout naturellement une
concaténation qui va être jouée ce qui calculera une nouvelle chaîne de caractères.
Du coup, une question légitime se pose peut-être à vous : que se passe-t-il si on utilise l'opérateur + avec une chaîne de caractères et un entier. Le mieux c'est de le tester ensemble.
>>> start_message = "Counter = " >>> counter = 10 >>> message = start_message + counter Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: can only concatenate str (not "int") to str >>>
Mais alors comment obtenir une chaîne de caractères contenant la chaîne passée en premier paramètre avec la valeur numérique à la suite ? La solution consiste à convertir la valeur numérique en une chaîne de caractères et de réaliser la concaténation.
>>> start_message = "Counter = " >>> counter = 10 >>> message = start_message + str(counter) >>> print(message) Counter = 10 >>>
Depuis Python 3.0 il est possible de préciser le type d'une variable lors de sa déclaration.
Pour spécifier le type d'une variable, il faut ajouter un :
suivit du nom du type entre
le nom de la variable et le caractère =
. Voici exemple de spécification d'un type sur une déclaration de variable.
>>> counter : int = 10 >>> print(counter) 10 >>> message : str = "Hello World" >>> print(message) Hello World >>>
>>> bad_declaration1 : str = 1 >>> print(bad_declaration1) 1 >>> bad_declaration2 : int = "Truc de fou" >>> print(bad_declaration2) Truc de fou >>>
Je vous recommande de spécifier le type de données utilisé par vos variables, du moins tant que celui-ci ne change pas au fil du temps. Cela permettra de considérablement aider à la compréhension quand vous, ou une autre personne, relirez ce code.
Pour appuyer mon propos, notez que l'IDE PyCharm suggère de rajouter l'information de type sur vos déclarations de variables quand cela n'est pas fait.
Comme nous l'avons vu dans les chapitres précédents, la fonction input
permet de lire une chaîne de caractères à partir du clavier. Je vous renvoie vers notre
documentation sur la fonction imput, pour de plus amples informations.
Veuillez créer un script appelé "addition.py"
dans l'IDE (ou l'éditeur) de votre choix. Celui-ci devra demander deux valeurs
entières à l'utilisateur et calculer la somme de ces deux valeurs. Le résultat devra être affiché sur la console.
Veuillez jouer le jeu et ne commencez pas par lire la correction suivante. ;-)
La seule difficulté dans cet exercice réside dans le fait que la fonction input
permet de lire des chaînes de caractères à partir du clavier. Or, nous voulons ajouter deux valeurs entières. Des conversions de str
vers int
sont donc nécessaires. Voici ma correction.
1 2 3 4 5 6 7 8 9 10 11 12 13 |
# On demande à lire notre première valeur first_string : str = input("Veuillez saisir un entier : ") # On convertit la chaîne de caractère en un entier first = int(first_string) # On demande à lire la second valeur qu'on convertit immédiatement en entier second : int = int(input("Veuillez saisir un autre entier : ")) # On réalise la somme des deux valeurs result : int = first + second # On affiche le résultat print(first, "+", second, "=", result) |
Et voici un exemple d'utilisation de notre programme.
Veuillez saisir un entier : 7 Veuillez saisir un autre entier : 3 7 + 3 = 10
Améliorations / Corrections
Vous avez des améliorations (ou des corrections) à proposer pour ce document : je vous remerçie par avance de m'en faire part, cela m'aide à améliorer le site.
Emplacement :
Description des améliorations :