Comment formater automatiquement votre code Python avec du noir

Écrire du code Python est une chose et écrire le code dans un bon format en est une autre. Les programmeurs juniors se concentrent souvent pour s'assurer que leur code fonctionne et oublient de formater le code correctement en cours de route.

Si vous écrivez un petit programme (avec 1000 lignes de codes), vous pouvez probablement vous en sortir sans formater votre code.

Mais à mesure que les programmes deviennent de plus en plus complexes, ils deviennent de plus en plus difficiles à comprendre. À un moment donné (environ 15 000 lignes de code), il devient plus difficile de comprendre le code que vous avez vous-même écrit.

La différence entre travailler sur du code bien formaté et travailler sur du code mal formaté est comme la différence entre vivre dans un palais et vivre dans une maison sale.

Pourquoi le formatage de votre code Python est important

Lisibilité

Le formatage de votre code vous aidera à lire votre code efficacement . Cela a l'air plus organisé et lorsque quelqu'un regarde votre code, il aura une bonne impression.

Cela vous aidera dans vos entretiens de codage

Lorsque vous participez à une entrevue de codage, les intervieweurs se soucient parfois de bien formater votre code. Si vous oubliez de faire ce formatage, vous risquez de perdre vos perspectives d'emploi, simplement à cause de votre code mal formaté.

Support d'équipe

Le formatage de votre code devient plus important lorsque vous travaillez en équipe . Plusieurs personnes travailleront probablement sur le même projet logiciel et le code que vous écrivez doit être compris par vos coéquipiers. Sinon, il devient plus difficile de travailler ensemble.

Cela facilite la détection des bogues

Un code mal formaté peut rendre vraiment très difficile la détection de bogues ou même le travail sur un programme. C'est aussi vraiment horrible à regarder. C'est une offense à vos yeux.

Pylint et Flake8

La plupart des développeurs Python aiment utiliser Pylint ou Flake8 pour vérifier leur code pour les erreurs et les guides de style.

Pylint est un outil qui vérifie les erreurs en Python. Il essaie de faire appliquer une norme de codage et recherche les odeurs de code. Il peut également rechercher certaines erreurs de type, il peut recommander des suggestions sur la façon dont des blocs particuliers peuvent être refactorisés et peut vous offrir des détails sur la complexité du code.

Flake8 est une bibliothèque Python qui englobe PyFlakes , pycodestyle et le script McCabe de Ned Batchelder . C'est une excellente boîte à outils pour vérifier votre base de code par rapport au style de codage (PEP8) , les erreurs de programmation comme «bibliothèque importée mais non utilisée», «nom non défini » et le code qui n'est pas indenté.

Le problème est que ces outils ne signalent que les problèmes qu'ils identifient dans le code source et laissent le fardeau aux développeurs Python de les résoudre!

Mais que se passerait-il si nous avions un outil capable d'identifier et de résoudre le problème en même temps? Black est un outil qui vous permet d' identifier les erreurs et de formater votre code python en même temps. Ainsi, cela vous rend plus productif.

Introduction au noir

À partir du projet README:

En utilisant Black , vous acceptez de céder le contrôle sur les minuties du formatage manuel. En retour, Black vous offre la vitesse, le déterminisme et la liberté du pycodestyle qui harcèle le formatage. Vous économiserez du temps et de l'énergie mentale pour des questions plus importantes.

Black peut reformater votre fichier entier en place selon le style de code noir. Cela aide votre cerveau à se concentrer sur le problème que vous souhaitez résoudre et à coder des solutions, plutôt que de se laisser distraire par la structure du code et des différences stylistiques mineures.

Voyons donc comment l'utiliser.

Installer le noir

Le noir peut être installé en courant pip install black. Il nécessite Python 3.6.0+ pour fonctionner. Une fois Black installé, vous aurez un nouvel outil de ligne de commande appelé black à votre disposition dans votre shell, et vous êtes prêt à commencer!

Pour commencer tout de suite avec des valeurs par défaut raisonnables, choisissez le fichier python que vous souhaitez formater, puis écrivez filename.py en noir dans le terminal. Ensuite, Black formatera votre fichier python.

Nous allons maintenant voir ce que Black peut nous aider à faire.

Formater un seul fichier

Regardons cet exemple simple: voici mes deux fonctions python dans mon fichier python appelé sample_code.py.

Vous pouvez utiliser black sample_code.pydans le terminal pour changer le format. Après avoir exécuté Black, vous verrez la sortie suivante:

Ensuite, vous pouvez ouvrir sample_code.py pour voir le code Python formaté:

Le code Python est maintenant formaté et il est plus lisible.

Formater plusieurs fichiers

Pour formater plusieurs fichiers python, écrivez black folder_name/dans le terminal.

Trois fichiers python dans le dossier nommé python_with_black ont ​​été reformatés.

Vérification des fichiers pour le formatage

Si vous ne voulez pas que Black modifie votre fichier, mais que vous voulez savoir si Black pense qu'un fichier devrait être changé, vous pouvez utiliser l'une des commandes suivantes:

black --check .: Cela vérifiera quel (s) fichier (s) python peut être formaté dans le dossier actuel (mais ne modifie pas réellement le (s) fichier (s) python).

black --check --diff file_name.py : Ceci montre ce qui doit être fait au fichier mais ne modifie pas le fichier.

Modifier le nombre de caractères par ligne

Notez que le noir utilise par défaut 88 caractères pour sa longueur de ligne, mais vous pouvez changer cela en utilisant l'option «-l» ou «- -line-length».

Par exemple, pour changer 60 caractères: black -l 60 python_file.py.

Noir dans Jupyter Notebook

Pour les utilisateurs de notebook Jupyter, vous pouvez toujours formater automatiquement votre code Python avec cette simple extension appelée Jupyter Black. Cette extension reformate / embellit le code dans la cellule de code d'un ordinateur portable en noir.

L'extension Jupyter Black fournit

  • Un bouton de barre d'outils.
  • Un raccourci clavier pour reformater la cellule de code actuelle (par défaut: Ctrl-B).
  • Un raccourci clavier pour reformater des cellules de code entières (par défaut: Ctrl-Shift-B).

Installez Jupyter Black

Assurez-vous d'abord que vous avez installé jupyter-contrib-nbextensions et black, puis exécutez les commandes suivantes.

jupyter nbextension install //github.com/drillan/jupyter-black/archive/master.zip — user

Puis activez l'extension en exécutant:

jupyter nbextension enable jupyter-black-master/jupyter-black 

Vous pouvez maintenant commencer à formater votre code python dans chaque cellule de notebook.

Tout d'abord, sélectionnez la cellule de bloc-notes dans laquelle vous souhaitez formater votre code python, puis cliquez sur le bouton d'extension appelé Noir.

Cliquez ensuite sur le bouton Jupyter Black:

Intégration de l'éditeur

Vous pouvez intégrer Black à vos éditeurs préférés. Actuellement, Black prend en charge PyCharm / IntelliJ IDEA, Wing IDE, Vim, Visual Studio Code, Sublime Text 3, Atom / Nuclide, Kakoune et Thonny. Suivez les instructions ici pour intégrer Black à votre éditeur préféré.

Si vous voulez en savoir plus sur Black, je vous recommande de regarder la conférence PyCon 2019 de Łukasz Langa.

Si vous avez appris quelque chose de nouveau ou si vous avez aimé lire cet article, partagez-le afin que d'autres puissent le voir. D'ici là, rendez-vous dans le prochain post! Je suis également joignable sur Twitter @Davis_McDavid.