[PEP8] Reprenez le code source Python et écrivez-le proprement

Au début

Si vous regardez les sites d'introduction des langages de programmation, vous verrez que Python est décrit comme un langage bien comporté. J'ai l'impression que Python a plus de restrictions sur la façon de l'écrire que les autres langages, mais il a toujours un haut degré de liberté, et lorsque vous le développez réellement, un grand nombre d'habitudes propres à chaque programmeur resteront dans la source.

Ce n'est pas un problème très important pour les loisirs personnels, mais c'est un problème sérieux pour le travail, en particulier pour le développement de l'équipe. Une fois développé, il doit essentiellement être entretenu pendant de nombreuses années, et le responsable de la maintenance change souvent au cours de cette période. Il est très important de définir les règles du programme dans le projet pour une maintenance ultérieure.

Si vous souhaitez définir les règles de chaque projet, vous pouvez le créer à partir de zéro. Cependant, comme cela prend du temps et des coûts, nous créons souvent des normes de codage basées sur PEP8, je voudrais donc vous les présenter.

Qu'est-ce que PEP8

PEP8 est un standard de codage Python créé sur la base de l'idée que «le code est lu plus souvent qu'écrit». En détournant cette convention, nous visons à rendre le code plus facile à lire et à rendre cohérent le style de code créé par chaque programmeur.

Le PEP8 montre qu'il n'est pas toujours nécessaire de respecter cet accord. Je pense qu'il vaut mieux créer des règles de manière flexible en fonction des caractéristiques du projet.

Mais sachez qu'il y a des moments où vous devez être incohérent
Autrement dit, ce guide de style peut ne pas s'appliquer.
En cas de doute, donnez la priorité à votre jugement.
Regardez d'autres exemples et décidez lequel est le mieux.

Comment utiliser

PEP8 lui-même est une convention, mais un mécanisme est fourni qui vous permet de vérifier facilement si le code peut être écrit selon cette convention.

pip install pep8

--Exécuter Spécifiez le code source cible dans l'argument et appuyez sur la commande pep8

pep8 test.py 

--Résultat

test.py:16:1: E302 expected 2 blank lines, found 1
test.py:22:80: E501 line too long (95 > 79 characters)
test.py:27:1: E302 expected 2 blank lines, found 1
test.py:39:1: E302 expected 2 blank lines, found 1
test.py:44:11: E225 missing whitespace around operator
test.py:46:12: E225 missing whitespace around operator
test.py:47:13: E225 missing whitespace around operator
test.py:50:27: W291 trailing whitespace
test.py:51:34: W291 trailing whitespace
test.py:60:45: W291 trailing whitespace
test.py:66:16: E231 missing whitespace after ':'
test.py:74:80: E501 line too long (90 > 79 characters)
test.py:90:10: E231 missing whitespace after ','
test.py:92:56: E231 missing whitespace after ','
test.py:101:1: W391 blank line at end of file

À propos du contenu de l'accord

Voici quelques termes et conditions.

Retrait

―― 1 retrait utilise 4 espaces.

foo = long_function_name(var_one, var_two,
                         var_three, var_four)

-Ou ajoutez quatre espaces pour distinguer les arguments des autres

def long_function_name(
        var_one, var_two, var_three,
        var_four):

Tabulation ou espace

Longueur de la ligne

--Toutes les longueurs de ligne jusqu'à 79 caractères.

with open('/path/to/some/file/you/want/to/read') as file_1, \
     open('/path/to/some/file/being/written', 'w') as file_2:
    file_2.write(file_1.read())

Ligne blanche

--Les fonctions et classes de niveau supérieur sont définies avec deux lignes séparées.

Encodage du fichier source

--Utiliser utf8

import

--La déclaration d'importation doit normalement séparer les lignes

#good: 
import os
import sys

#bad:  
import sys, os

--Spécifiez l'instruction d'importation avec un chemin absolu sauf pour les exceptions

#good: 
import mypkg.sibling
from mypkg import sibling
from mypkg.sibling import example

#bad:  
from . import sibling
from .sibling import example

Caractères vierges dans les expressions et les phrases

#good: 
spam(ham[1], {eggs: 2})
#bad: 
spam( ham[ 1 ], { eggs: 2 } )

#good: 
foo = (0,)
#bad: 
bar = (0, )

#good: 
spam(1)
#bad: 
spam (1)

#good: 
dct['key'] = lst[index]
#bad: 
dct ['key'] = lst [index]

#good: 
x = 1
y = 2
long_variable = 3
#bad: 
x             = 1
y             = 2
long_variable = 3

Virgule de fin

#good
FILES = ('setup.cfg',)

référence

https://pep8-ja.readthedocs.io/ja/latest/

Recommended Posts

[PEP8] Reprenez le code source Python et écrivez-le proprement
Le processus de création et d'amélioration du code Python orienté objet
[Python] Lire le code source de Flask
[Python] Lire le code source de Bottle Part 2
[Python] Lire le code source de Bottle Part 1
Écrivons un programme Python et exécutons-le
Conversion de Fourier du fichier wav lu par Python, conversion inverse et réécriture
[Python3] Prenez une capture d'écran d'une page Web sur le serveur et recadrez-la davantage
Écrivons du code python qui analyse le code go et génère du code go
Obtenez de manière récursive la liste Excel dans un dossier spécifique avec python et écrivez-la dans Excel.
[Python / Ruby] Comprendre le code Comment obtenir des données en ligne et les écrire au format CSV
[Python] J'ai installé le jeu depuis pip et j'ai essayé de jouer
Vérifiez toujours PEP8 lors de l'édition du code source Python dans Emacs
PyArmor ~ Un moyen facile de chiffrer et de fournir du code source Python ~
Installation source et installation de Python
J'ai téléchargé la source python
Premier python ② Essayez d'écrire du code tout en examinant les fonctionnalités de python
J'ai écrit le code pour écrire le code Brainf * ck en python
Convertissez le résultat de python optparse en dict et utilisez-le
Code Python pour vérifier et représenter graphiquement s'il suit la loi de Benford
L'histoire de Python et l'histoire de NaN
Ecrire le code de test du sélénium en python
Vérifiez le style de code python à l'aide de pep8
Comment écrire le bon shebang dans les scripts Perl, Python et Ruby
[Python] Doux Est-ce doux? À propos des suites et des expressions dans les documents officiels
J'ai défini des variables d'environnement dans Docker et je les ai affichées en Python.
Exemple de code pour obtenir oauth_token et oauth_token_secret de l'API Twitter en Python 2.7
Envoyer et recevoir des données d'image au format JSON en Python sur le réseau
Essayez d'écrire du code python pour générer du code go - Essayez de porter JSON-to-Go et ainsi de suite
Démarrez la webcam, prenez une image fixe et enregistrez-la localement
[python] Envoyez l'image capturée de la caméra Web au serveur et enregistrez-la