Question Façon de créer des commentaires multilignes en Python?


J'ai récemment commencé à étudier Python, mais je ne pouvais pas trouver comment implémenter des commentaires multi-lignes. La plupart des langues ont des symboles de commentaire de bloc comme

/* 

*/

J'ai essayé ceci en Python, mais il y a une erreur, donc ce n'est probablement pas la bonne façon. Est-ce que Python a réellement une fonction de commentaire multiligne?


828
2017-10-08 12:51


origine


Réponses:


Vous pouvez utiliser des chaînes à trois guillemets. Quand ils ne sont pas docstring (première chose dans une classe / fonction / module), ils sont ignorés.

'''
This is a multiline
comment.
'''

(Assurez-vous d'indenter le premier ''' de manière appropriée pour éviter une IndentationError.)

Guido van Rossum (créateur de Python) tweeté cette comme un "pourboire professionnel".

Cependant, le guide de style de Python, PEP8, favorise en utilisant des commentaires consécutifs sur une seule ligne, et c'est aussi ce que vous trouverez dans de nombreux projets. Les éditeurs ont généralement un raccourci pour le faire facilement.


1336
2017-10-08 12:58



Python a un chaîne multiligne / syntaxe de commentaire dans le sens où sauf si utilisé comme docstrings, cordes multilignes générer aucun bytecode -- juste comme #-Préparés des commentaires. En effet, il agit exactement comme un commentaire.

D'un autre côté, si vous dites que ce comportement doit être documenté dans le docs pour être une véritable syntaxe de commentaire, alors oui, vous auriez raison de dire que ce n'est pas garantie dans le cadre des spécifications linguistiques.

Dans tous les cas, votre éditeur devrait également être en mesure de commenter facilement une sélection région (en plaçant un # devant chaque ligne individuellement). Sinon, passez à un éditeur qui le fait.

La programmation en Python sans certaines fonctionnalités d'édition de texte peut être douloureuse expérience. Trouver le bon éditeur (et savoir comment l'utiliser) peut faire un gros différence dans la façon dont l'expérience de programmation Python est perçue.

Non seulement l'éditeur devrait être en mesure de commenter des régions sélectionnées, il devrait aussi être capable de déplacer des blocs de code vers la gauche et la droite facilement, et devrait placer automatiquement le curseur au niveau d'indentation actuel lorsque vous appuyez sur Entrer. Le pliage de code peut également être utile.


Pour protéger contre la dégradation de la liaison, voici le contenu de Le tweet de Guido van Rossum:

@BSUCSClub Astuce Python: vous pouvez utiliser des chaînes multilignes comme commentaires multilignes. A moins d'être utilisés comme docstrings, ils ne génèrent pas de code! :-)


63
2017-10-08 12:54



Dans Python 2.7, le commentaire multiligne est:

"""
This is a
multilline comment
"""

Dans le cas où vous êtes dans un cours, vous devez le tabuler correctement.

Par exemple:

class weather2():
   """
   def getStatus_code(self, url):
       world.url = url
       result = requests.get(url)
       return result.status_code
   """

J'espère que ça aide!


27
2018-02-16 14:00



De la réponse acceptée ...

Vous pouvez utiliser des chaînes à trois guillemets. Quand ils ne sont pas docstring (première chose dans une classe / fonction / module), ils sont ignorés.

Ce n'est simplement pas vrai. Contrairement aux commentaires, les chaînes à guillemets simples sont toujours analysées et doivent être syntaxiquement valides, quel que soit leur emplacement dans le code source.

Si vous essayez d'exécuter ce code ...

def parse_token(token):
    """
    This function parses a token.
    TODO: write a decent docstring :-)
    """

    if token == '\\and':
        do_something()

    elif token == '\\or':
        do_something_else()

    elif token == '\\xor':
        '''
        Note that we still need to provide support for the deprecated
        token \xor. Hopefully we can drop support in libfoo 2.0.
        '''
        do_a_different_thing()

    else:
        raise ValueError

Vous aurez soit ...

ValueError: invalid \x escape

... sur Python 2.x ou ...

SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 79-80: truncated \xXX escape

... sur Python 3.x.

La seule façon de faire des commentaires multi-lignes qui sont ignorés par l'analyseur est ...

elif token == '\\xor':
    # Note that we still need to provide support for the deprecated
    # token \xor. Hopefully we can drop support in libfoo 2.0.
    do_a_different_thing()

23
2018-06-29 13:04



AFAIK, Python n'a pas de commentaires de bloc. Pour commenter des lignes individuelles, vous pouvez utiliser # personnage.

Si vous utilisez Bloc-notes ++, il y a un raccourci pour commenter les blocs. Je suis sûr que d'autres aiment gVim et Emacs avoir des caractéristiques similaires.


22
2017-10-08 12:55



Je pense que non, sauf qu'une chaîne multiligne n'est pas traitée. Cependant, la plupart, sinon tous les IDE Python ont un raccourci pour «commenter» plusieurs lignes de code.


9
2017-10-08 12:54



Si vous mettez un commentaire dans

"""
long comment here
"""

au milieu d'un script, python / linters ne reconnaitra pas cela. Le pliage sera foiré, car le commentaire ci-dessus ne fait pas partie des recommandations standard. Il vaut mieux l'utiliser

# long comment
# here.

Si tu utilises vim, vous pouvez plugins comme https://github.com/tpope/vim-commentary, pour commenter automatiquement les longues lignes de commentaires en appuyant sur Vjgcc. Où Vj sélectionne 2 lignes de code, et gcc les commente.

Si vous ne voulez pas utiliser les plugins comme ci-dessus, vous pouvez utiliser la recherche et remplacer comme

:.,.+1s/^/# /g.

Cela remplacera le premier caractère sur la ligne actuelle et suivante avec #.


4
2018-01-31 18:16



Sur Python 2.7.13:

Unique:

"A sample single line comment "

Multiline:

"""
A sample
multiline comment
on PyCharm
"""

3
2018-05-11 15:47