Résumé de la norme de codage Python PEP8 (1) A continué
Les commentaires de bloc (#) s'appliquent généralement à certains codes qui suivent et se mettent en retrait au même niveau que ce code.
Laissez au moins deux espaces entre l'instruction et le commentaire en ligne. Pas besoin de commentaires en ligne explicites.
mauvais exemple:
x = x + 1 #Augmenter x de 1
Vous devez écrire une docstring pour chaque module, fonction, classe ou méthode.
Utilisez un nom qui reflète l'utilisation plutôt que l'implémentation
b (1 lettre minuscule)
B (1 lettre supérieure)
lowercase
lower_case_with_underscores
UPPERCASE
UPPER_CASE_WITH_UNDERSCORES
CapitalizedWords
-Ne pas utiliser les lettres simples «l» (ell inférieur), «O» (o supérieur) et «I» (œil supérieur) comme variables. -Faire le nom du module un nom court dans toutes les lettres minuscules -Utilisez la méthode CapWords pour les noms de classe (connectez les mots en les mettant en majuscule) -Les variables globales limitées intra-module sont précédées d'un trait de soulignement (_) pour indiquer clairement qu'elles sont privées. -Les noms des fonctions doivent être en minuscules uniquement -Toujours utiliser self comme nom du premier argument de la méthode d'instance -Toujours utiliser cls pour le nom du premier argument de la méthode de classe -Utilisez uniquement les noms de méthode et les variables d'instance en minuscules, et séparez les mots avec des traits de soulignement si nécessaire. ・ Écrivez les constantes en majuscules et séparez les mots avec des traits de soulignement.
-Ne pas ajouter de trait de soulignement au début des attributs publics -Si le nom de l'attribut publié est en conflit avec le mot réservé, ajoutez un trait de soulignement immédiatement après le nom de l'attribut. · Utilisez les propriétés pour masquer l'implémentation des appels de fonction avec une simple syntaxe d'accès aux données ・ S'il existe un attribut que vous ne souhaitez pas utiliser dans la sous-classe, ajoutez deux traits de soulignement au début du nom au lieu de la fin.
· Une interface documentée est considérée comme une interface publique à moins que le document ne la déclare explicitement comme une interface interne. · Les interfaces internes (packages, modules, classes, fonctions, attributs, autres noms) sont précédées d'un trait de soulignement.
· Ecrire du code qui ne désavantage pas les autres implémentations Python (PyPy, Jython, IronPython, Cython, Psyco, etc.)
-Toujours utiliser est ou n'est pas en comparaison avec None
-Toutes les opérations lors de la mise en œuvre du tri en utilisant la comparaison étendue
(__eq__, __ne__, __lt__, __le__, __gt__, __ge__)
Implémenter
-Toujours utiliser l'instruction def au lieu d'écrire une instruction d'affectation qui connecte l'expression lambda directement à l'identifiant
Bon exemple:
def f(x): return 2*x
mauvais exemple:
f = lambda x: 2*x
· Essayez de dériver une exception d'une exception au lieu d'une BaseException · Python3 utilise «élever X à partir de Y» pour échanger explicitement les exceptions sans perdre le retraçage d'origine -Utilisez lever ValueError ('message') pour lever une exception dans Python2 -Lors de la capture d'une exception, spécifiez une exception spécifique au lieu du brut sauf: qui ne spécifie pas d'exception.
Comme ça
try:
import platform_specific_module
except ImportError:
platform_specific_module = None
-Si vous voulez lier l'exception interceptée à un nom spécifique, nommez explicitement l'exception
Comme ça
try:
process_data()
except Exception as exc:
raise DataProcessingFailedError(str(exc))
· Utiliser explicitement la nouvelle hiérarchie d’erreurs liée au système d’exploitation lors de la détection des erreurs du système d’exploitation -Pour tous les try / except, limitez la plage incluse dans try au code minimum nécessaire.
Bon exemple:
try:
value = collection[key]
except KeyError:
return key_not_found(key)
else:
return handle_value(value)
mauvais exemple:
try:
#Le processus d'inclusion dans try est trop important
return handle_value(collection[key])
except KeyError:
# handle_value()Attrape également le KeyError généré par
return key_not_found(key)
· Utilisez l'instruction with si la ressource n'est utilisée que dans une partie spécifique du code ・ Écrivez la déclaration de retour de manière cohérente. -S'il y a une instruction return dans la fonction qui renvoie une expression, l'instruction return qui ne renvoie aucune valeur est explicitement écrite comme return None. -Utilisez la méthode string plutôt que le module string · Utilisez «» .startswith () et «». Endswith () au lieu du découpage de chaîne pour vérifier si une chaîne a un préfixe ou un suffixe spécifique.
Bon exemple: if foo.startswith('bar'):
mauvais exemple: if foo[:3] == 'bar':
· Utilisez toujours isinstance () pour comparer les types d'objets au lieu de comparer directement les types
Bon exemple: if isinstance(obj, int):
mauvais exemple: if type(obj) is type(1):
-Pour les séquences, utilisez le fait que la séquence vide est False.
Bon exemple: if not seq:
if seq:
mauvais exemple: if len(seq):
if not len(seq):
-Ne pas écrire de littéraux de chaîne de caractères qui dépendent de caractères vides en fin de ligne · Arrêtez d'utiliser == pour comparer les valeurs booléennes avec True ou False
Bon exemple: if greeting:
mauvais exemple: if greeting == True:
Pire exemple: if greeting is True:
Code qui souhaite utiliser des annotations de fonction dans un style différent de PEP484 (https://www.python.org/dev/peps/pep-0484/#suggested-syntax-for-python-2-7-and-straddling-code) sur,
type: ignore
Est écrit vers le début du fichier. Cela indique au programme de vérification de type d'ignorer toutes les annotations.
Si vous comprenez simplement qu'il est écrit de cette manière, je pense que ce niveau de contenu est suffisant. Si vous voulez en savoir plus (pourquoi vous devriez l'écrire de cette façon), veuillez vous référer à Documentation.
Recommended Posts