2017-02-08 1 views
0

Selon PEP 8, ce qui est acceptable (et ce que je l'ai utilisé dans le passé):Formatage de rupture de ligne correct selon PEP 8?

result = some_function_that_takes_arguments(
    'a', 'b', 'c', 
    'd', 'e', 'f', 
) 

Ma question est, est-il de même à la définition de la fonction, donc quelque chose comme:

def some_function_that_takes_arguments(
    a, b, c, 
    d, e, f, 
): 
    return a,b,c,d,e,f 

un autre exemple de ce que je l'ai fait dans le passé:

if (this_is_one_thing 
    and that_is_another_thing 
): 
    do_something() 

Je l'ai fait ainsi pendant un certain temps (pour la cohérence toutes mes lignes> 79 col sont divisé de cette façon) et je me demande quelles sont les pensées des autres.

Est-ce clair/agréable à regarder? Est-ce que ceci adhère au PEP 8?

+0

Il est clair de regarder. Je ne connais pas la conformité PEP 8. –

+0

C'est bon! Je préfère avoir des lignes plus longues ~ 100 caractères, et s'il ne suffit pas de mettre certains paramètres sur la même ligne que '(' et certains sur le suivant, la fonction prend peut-être trop de paramètres – Moberg

Répondre

2

Selon ce doc sur PEP8 il est. La décomposition de la déclaration de fonction en plusieurs lignes est correcte tant que le niveau d'indentation est de 4 espaces.

lignes de continuation doivent aligner des éléments enroulé verticalement en utilisant la ligne implicite de python de jonction à l'intérieur de parenthèses, crochets et bretelles, ou au moyen d'un retrait négatif [7]. Lors de l'utilisation d'une indentation suspendue, le code suivant doit être pris en compte; il ne devrait pas y avoir d'arguments sur la première ligne et une autre indentation devrait être utilisée pour clairement se distinguer comme une ligne de continuation.

Oui:

# Aligned with opening delimiter. 
foo = long_function_name(var_one, var_two, 
        var_three, var_four) 

# More indentation included to distinguish this from the rest. 
def long_function_name(
    var_one, var_two, var_three, 
    var_four): 
print(var_one) 

# Hanging indents should add a level. 
foo = long_function_name(
var_one, var_two, 
var_three, var_four) 

Comme une note de côté si vous trouvez votre signature de la fonction à obtenir longtemps en raison du nombre d'arguments, pensez à diviser votre fonction à des unités plus atomiques (donc adhérer à principes du code propre).

+0

merci! edit w/the ** if ** statement? J'ai tendance à être un peu bavard dans les noms de paramètres, donc même si je n'ai que 2-3 paramètres j'ai tendance à franchir la limite de 79 cols (c'est peut-être quelque chose que je dois changer?) – wrwlf

+1

https://www.python.org/dev/peps/pep-0008/#multiline-if-statements donnez une lecture @wrwlf – ospahiu

+0

Sur une note de côté, parfois, j'aime personnellement placer une longue expression booléenne sur leur propre par exemple, 'is_long_boolean = expression1 et expression2 et expression 3. Puis je l'utilise comme si' is_long_boolean'. – ospahiu