Il ne suffit pas toujours d’écrire du code fonctionnel ; vous devez aussi essayer d’écrire du code bien structuré et facile à comprendre. Un code propre facilitera la maintenance de votre logiciel pour vous et pour les autres.
Python possède de nombreuses caractéristiques et fonctions qui peuvent vous aider à écrire un code plus propre. Voici quelques-unes des meilleures.
1. Automatiser la fermeture des ressources avec Context Manager
La fermeture manuelle des ressources peut s’avérer peu pratique lorsque votre code interagit avec un grand nombre de ressources. Vous pouvez oublier de fermer une ressource. Votre programme utilise alors les ressources système de manière inefficace, ce qui peut entraîner une fuite de mémoire.
Ce code ouvre un fichier, puis le ferme manuellement :
file = open('test.txt', 'r')
file_contents = file.read()
file.close()
words = file_contents.split(' ')
word_count = len(words)
print(word_count)
Vous pouvez automatiser la fermeture du fichier en utilisant un gestionnaire de contexte. Les gestionnaires de contexte gèrent les ressources pour vous, de sorte que vous ne devez pas vous souvenir de les gérer manuellement. Utilisez l’option avec pour créer un contexte permettant de gérer une ressource :
with open('test.txt', 'r') as file:
file_contents = file.read()
words = file_contents.split(' ')
word_count = len(words)
print(word_count)
Le code de ce bloc s’exécute dans le contexte de l’objet fichier qui a été créé. ouvrir retourne. Python ferme automatiquement ce fichier lorsque le code quitte ce contexte, même si une exception se produit.
2. Écrire des énoncés conditionnels plus propres
Vous pouvez vous retrouver à écrire beaucoup de code inutile lorsque vous utilisez des instructions if-else. Python possède des opérateurs ternaires qui vous aideront à écrire des instructions plus compactes. Le bloc de code ci-dessous présente une instruction if-else normale.
condition = True
if condition:
x = 1
else:
x = 0
print(x)
Vous pouvez réécrire ce code en utilisant un opérateur ternaire qui vous permet d’écrire la condition en une seule ligne de code.
condition = True
x = 1 if condition else 0
print(x)
Il est important de noter que vous devez utiliser les opérateurs ternaires pour mettre en œuvre une logique simple. Dans le cas d’une logique plus complexe et d’instructions conditionnelles imbriquées, l’opérateur ternaire peut devenir difficile à comprendre.
3. Suivi des éléments avec la fonction Enumerate
Lorsque vous itérez sur une liste Python, vous pouvez accéder à l’index de l’élément courant de deux manières. La première consiste à utiliser la boucle for traditionnelle. Cela fonctionne bien, mais le code n’est pas aussi propre qu’il pourrait l’être. De plus, vous devez initialiser l’index manuellement.
cars = ['Bugatti', 'Mercedes', 'Toyota']
index = 0
for car in cars:
print(index, car)
index += 1
L’autre moyen est d’utiliser la fonction enumerate intégrée à Python. Cela vous permettra d’accéder à l’index et à la valeur correspondante dans la liste pendant le bouclage.
cars = ['Bugatti', 'Mercedes', 'Toyota']
for index, car in enumerate (cars):
print(index, car)
Vous n’avez plus à tenir compte de l’indice manuellement.
4. Boucler sur plusieurs listes avec la fonction Zip
Vous pouvez également utiliser la fonction enumerate pour boucler sur plusieurs listes à la fois. Obtenez l’index de la première liste, puis utilisez-le pour accéder aux valeurs correspondantes dans les autres listes.
english_names = ['food', 'water', 'car']
spanish_names = ['alimento', 'agua', 'auto']
for index, name in enumerate(english_names):
spanish = spanish_names [index]
print (f' {name} in spanish is {spanish}')
Cela fonctionne bien, mais vous devrez écrire beaucoup de code inutile si le nombre de listes augmente. Pour écrire un code plus propre, vous pouvez utiliser la fonction zip et lui passer les noms de vos listes.
english_names = ['food', 'water', 'car']
spanish_names = ['alimento', 'agua', 'auto']
for english, spanish in zip(english_names, spanish_names):
print(f' {english} in spanish is {spanish}')
Vous devriez continuer à utiliser la fonction enumerate pour boucler sur une seule liste. Mais si vous bouclez sur plusieurs listes ensemble, pensez à utiliser la fonction zip.
5. Masquage des données sensibles de l’utilisateur avec GetPass
Lorsque vous saisissez des informations sensibles, celles-ci ne doivent pas être visibles en clair à l’écran. La manière habituelle de saisir des données en Python est d’utiliser la fonction input :
username = input('Username: ')
password = input('Password: ')
print('Logging In...')
Cependant, la fonction input rend le mot de passe visible en clair à l’écran pendant la saisie. Pour vous assurer que le mot de passe n’est pas affiché à l’écran, vous devez utiliser la fonction getpass à la place :
from getpass import getpass
username = input('Username: ')
password = getpass('Password:')
print('Logging In...')
Le module getpass fait partie de la bibliothèque standard de Python, vous n’avez donc pas besoin de l’installer.
6. Rendre les grands nombres lisibles grâce aux caractères de remplacement de l’underscore
Lorsque vous avez affaire à de grands nombres dans votre programme, ils peuvent être très difficiles à lire au premier coup d’œil. L’attribution de nombres incorrects aux variables conduit à un programme défectueux et il peut être très difficile de repérer cette erreur.
num1 = 10000000000
num2 = 100000000
total = num1 + num2
print(total)
Vous pouvez réécrire le code ci-dessus en utilisant des underscores pour séparer les groupes de milliers, un moyen courant de rendre les grands nombres plus lisibles.
num1 = 10_000_000_000
num2 = 100_000_000
total = num1 + num2
print(f'{total:,}')
La chaîne f de la fonction print sépare la sortie en utilisant le séparateur de milliers.
7. Utilisation de la fonction d’aide pour en savoir plus sur un module
La fonction d’aide est très importante en Python. Elle vous permet de savoir comment utiliser un module que vous avez installé. Pour l’utiliser, installez le module, puis lancez l’interpréteur Python dans un terminal et pointez vers le chemin où vous avez installé le module. Importez le module et enfin passez le nom du module à la fonction help.
Pour découvrir les méthodes et attributs que vous pouvez utiliser, remplacez la fonction help par la fonction dir.
La fonction dir renvoie les méthodes et les attributs que le module prend en charge et non la documentation complète. Ceci est utile lorsque vous voulez avoir un aperçu de ce que fait le module.
Écrire du code Python plus propre
Python est un langage très diversifié. Comme pour tout autre langage, vous apprendrez à écrire du code Python plus propre avec le temps.
Python possède de nombreux modules et fonctions intégrés. Dans certains cas, vous pouvez écrire du code difficile à lire parce que vous ne connaissez pas l’existence d’une certaine fonction. Pour être sûr d’être mieux informé, vous devriez lire d’autres articles sur la façon d’écrire un meilleur code.
