web-dev-qa-db-fra.com

Python: '#' commentaires après le backslash

Cela ne fonctionne pas:

something = \
    line_of_code * \    #  Comment
    another_line_of_code * \    #  Comment
    and_another_one * \         #  Comment
    etc

Cela ne fait pas non plus:

something = \
    #  Comment \
    line_of_code * \
    #  Comment \
    another_line_of_code * ...

Cela ne fait pas non plus:

something = \
    ''' Comment ''' \
    line_of_code * \
    ''' Comment ''' \
    another_line_of_code * ...

S'il y a un moyen de faire des commentaires dans le code brisé en plusieurs lignes?

47
MarcinKonowalczyk

Faites-le comme ça:

a, b, c, d = range(1, 5)

result = (
    # First is 1
    a *
    # Then goes 2, result is 2 now
    b *
    # And then 3, result is 6
    c *
    # And 4, result should be 24
    d
)

En fait, selon Pep8 parenthèses sont préférés sur des barres obliques, lors de la rupture de quelque chose en plusieurs lignes:

La manière préférée d'emballage de longues lignes consiste à utiliser la continuation implicite de la ligne implicite de Python à l'intérieur des parenthèses, des supports et des accolades. Les longues lignes peuvent être brisées sur plusieurs lignes en emballant des expressions entre parenthèses. Ceux-ci doivent être utilisés de préférence à utiliser une barre oblique inverse pour la poursuite de la ligne.

Dans votre cas, il permet également de mettre des commentaires.

Voici une preuve que cela fonctionne: http://ideone.com/flccuj

41
Tadeck

Je ne sais pas ce que vous essayez de faire est supporté par Python. Lire Section PEP8 sur les commentaires en ligne . Mettre les commentaires au milieu de la ligne est "laid" et probablement déroutant.

Python Way est avec # sur chaque ligne si vous voulez commenter quelque chose ou pour des commentaires inline tout après # est ignoré.

Si vous voulez vraiment commenter une déclaration multiligne qui est vraiment nécessaire, mettez-le avant ou après.

a, b, c, d = range(1, 5)
# a is ..., b is ...
# c is ..., d is ...
result = (a, b, c, d)

je ne veux certainement pas entrer dans une dispute sur le style, mais simplement parce que vous pouvez faire quelque chose ne signifie que c'est clair. Les commentaires en ligne sont parfaits pour clarifier les courtes lignes de code qui ont juste besoin d'un pointeur court.

0
Joop