Résumé sur le style pythonique (1): PEP8

Contexte

Je suis sur le point de changer de travail et d'utiliser python sérieusement au travail, alors j'aimerais résumer le style de codage pythonique que j'ai examiné plus tôt en tant que critique.

UPDATE: Partie 2 a été mise à jour.

Contenu de cette page

L'adhésion à PEP 8 est la première base. Il existe déjà de nombreux articles, y compris la traduction japonaise existante, alors j'aimerais que vous accordiez la priorité à cela. Original Traduction japonaise

Autres articles Qiita: Conforme à la norme de codage Python PEP8 Résumé de la norme de codage Python PEP8 (1)

But de la création

(D'une certaine manière, j'ai l'impression que ce genre de chose est proclamé par quelqu'un qui fouille régulièrement.)

La deuxième fois, je résumerai le contenu qui ne figure pas dans PEP 8. Si vous avez des suppléments ou des suggestions (je ne suis pas japonais, veuillez donc l'indiquer en japonais), veuillez me donner Masakari. Puis au sujet principal ~

supposition

Disposition du code

Retrait

test = long_function(var1, var2,
                     var3, var4)
def long_function(
        var1, var2,var3,
        var4):
    print(val_one)
test = long_function(
    var1, var2, var3,
    va4)
if (hoge1_is_true and
    hoge2_is_true):
    #commentaire
    do_something()

#OR
if (hoge1_is_true
        and hoge2_is_true):
    do something
my_list = [
    1, 2, 3,
    4, 5, 6
    ]

#OR
my_list = [
    1, 2, 3,
    4, 5, 6
]

Longueur de la ligne

Utilisez des parenthèses:

if (hoge1 and hoge2
        hoge3 and hoge4):
    do_something

""utilisation:

with open(filepath1, "r") as file1, \
     open(filepath2, "r") as file2:
    do_something

Emplacement de la ligne de rupture

Ligne de rupture avant l'opérateur pour plus de lisibilité

revenue = gacha1_price * payers1
          + gacha2_price * payers2
          + gacha3_price * payers3

Ligne blanche

Encodage du fichier source

importer

import pandas
import numpy
from sklearn.linear_model import LinearRegression, LogisticRegression

Emplacement de l'instruction Dunder au niveau du module

"""This is the example module.

This module does stuff.
"""

from __future__ import barry_as_FLUFL

__all__ = ['a', 'b', 'c']
__version__ = '0.1'
__author__ = 'Cardinal Biggles'

import os
import sys

autre

#Yes
if foo == 'blah':
    do_blah_thing()
do_one()
do_two()
do_three()

#No:
if foo == 'blah': do_blah_thing()
do_one(); do_two(); do_three()

Citation

"""This is how you write 
documentatoin string.
"""

Espace dans le code

Évitez les espaces suivants

#Yes
buger(bread[2], {cheese: 1})
#No
buger( bread[ 2 ], { cheese: 1 } )
#Yes
a_tuple = (0,)
#No
a_tuple = (0, )
#Yes
if a: print x, y; x, y = y, x
#No
if a : print x , y ; x , y = y , x
#Yes
ham[1:9], ham[1:9:3], ham[:9:3], ham[1::3], ham[1:9:]
#No
ham[1: 9], ham[1 :9], ham[1:9 :3]
#Yes
ham[lower+offset : upper+offset], ham[: upper_fn(x) : step_fn(x)]
#No
ham[lower + offset:upper + offset]
#Yes
func_call(params)
#No
func_call (params)
#Yes
dct['key'] = lst[index]
#No
dct ['key'] = lst [index]
#Yes
x = 1
y = 2
long_variable = 3

#No
x             = 1
y             = 2
long_variable = 3
#Yes
def complex(real, imag=0.0):
    return magic(r=real, i=imag)
#No
def complex(real, imag = 0.0):
    return magic(r = real, i = imag)

Mettons l'espace suivant

#Yes
i = i + 1
submitted += 1
x = x*2 - 1
hypot2 = x*x + y*y
c = (a+b) * (a-b)

#No
i=i+1
submitted +=1
x = x * 2 - 1
hypot2 = x * x + y * y
c = (a + b) * (a - b)
#Yes
def munge(input: AnyStr): ...
def munge() -> AnyStr: ...

#No
def munge(input:AnyStr): ...
def munge()->PosInt: ...
#Yes
def munge(sep: AnyStr = None): ...
def munge(input: AnyStr, sep: AnyStr = None, limit=1000): ...

#No
def munge(input: AnyStr=None): ...
def munge(input: AnyStr, limit = 1000): ...

Fin virgule

#Yes
FILES = ('setup.cfg',)
#No
FILES = 'setup.cfg',
#Yes
FILES = [
    'setup.cfg',
    'tox.ini',
    ]
initialize(FILES,
           error=True,
           )

#No
FILES = ['setup.cfg', 'tox.ini',]
initialize(FILES, error=True,)

commentaire

Général

Bloquer le commentaire

Commentaire en ligne

Description du document

À propos de la dénomination

De base

b  #Minuscule simple
B  #Capitale unique
lowercase  #Tout en minuscules
lower_case_with_underscores  # _Minuscule avec
UPPERCASE  #Tout le capital
UPPER_CASE_WITH_UNDERSCORES  # _Avec capital
CapitalizedWords  #Initiales majuscules
CapitalizeAbbreviationLikeHTTP  #Pour les initiales majuscules, toutes les abréviations appropriées doivent être en majuscules
mixedCase  #composite
Capitalized_Words_With_Underscores  #Initiales majuscules laides+ _

_single_leading_underscore  #Lors de l'utilisation uniquement à l'intérieur, comme privé
single_trailing_underscore_ #Pour éviter les conflits avec les mots-clés Python
__double_leading_underscore  #Modifications lors de la dénomination des variables de classe
__double_leading_and_trailing_underscore__  #Ne le définissez jamais vous-même

Utilisation du style de dénomination

Autres règles de dénomination

Recommended Posts

Résumé sur le style pythonique (1): PEP8
Résumé sur le style pythonique (2): Autre grattage
Résumé sur Python3 + OpenCV3
Résumé et erreurs courantes sur cron
EP 2 Suivez le guide de style PEP 8