166 votes

Style de Python - continuation de ligne avec des chaînes ?

En essayant d'obéir à la python règles de style, j'ai mis mes éditeurs à un maximum de 79 cols.

Dans le PEP, il recommande l'utilisation de python implicite de poursuite à l'intérieur de crochets, parenthèses et accolades. Toutefois, lorsque vous traitez avec des cordes, quand j'appuie sur le col de la limite, ça devient un peu bizarre.

Par exemple, essayez d'utiliser une multiligne

mystr = """Why, hello there
wonderful stackoverflow people!"""

Sera de retour

"Why, hello there\nwonderful stackoverflow people!"

Ceci fonctionne:

mystr = "Why, hello there \
wonderful stackoverflow people!"

Puisqu'il revient à ceci:

"Why, hello there wonderful stackoverflow people!"

Mais, lorsque l'instruction est en retrait quelques pâtés de maisons de, cela fait un peu bizarre:

do stuff:
    and more stuff:
        and even some more stuff:
            mystr = "Why, hello there \
wonderful stackoverflow people!"

Si vous essayez de retraits et de la deuxième ligne:

do stuff:
    and more stuff:
        and even some more stuff:
            mystr = "Why, hello there \
            wonderful stackoverflow people!"

Votre chaîne de caractères se termine par:

"Why, hello there                wonderful stackoverflow people!"

Le seul moyen que j'ai trouvé pour contourner ce problème:

do stuff:
    and more stuff:
        and even some more stuff:
            mystr = "Why, hello there" \
            "wonderful stackoverflow people!"

Que j'aime mieux, mais il est aussi un peu mal à l'aise sur les yeux, comme il semble qu'il y est une chaîne assis au milieu de nulle part. Ceci va produire le bon:

"Why, hello there wonderful stackoverflow people!"

Donc, ma question est - ce que certaines personnes de recommandations sur la façon de le faire et s'il y a quelque chose qui m'échappe dans le guide de style qui ne montrer comment je doit faire?

Merci.

256voto

Sven Marnach Points 133943

Depuis les littéraux de chaîne adjacente sont automatiquement joint en une seule chaîne, vous pouvez simplement utiliser la continuation de ligne implicite à l’intérieur de parenthèses tel que recommandé par PEP 8 :

1voto

nmichaels Points 21955

J’ai contourné cela avec

dans le passé. Il n’est pas parfait, mais il fonctionne très bien pour très longues chaînes qui ont besoin de ne pas avoir de sauts de ligne en eux.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X