Question Guillemets simples ou guillemets doubles en Python [fermé]


Selon la documentation, ils sont à peu près interchangeables. Y a-t-il une raison stylistique d'utiliser l'un sur l'autre?


718
2017-09-11 08:18


origine


Réponses:


J'aime utiliser des guillemets autour des chaînes utilisées pour l'interpolation ou des messages en langage naturel, et des guillemets simples pour les petites chaînes de symboles, mais je vais enfreindre les règles si les chaînes contiennent des guillemets ou si j'oublie. J'utilise des guillemets doubles pour docstrings et des littéraux de chaîne bruts pour les expressions régulières même si elles ne sont pas nécessaires.

Par exemple:

LIGHT_MESSAGES = {
    'English': "There are %(number_of_lights)s lights.",
    'Pirate':  "Arr! Thar be %(number_of_lights)s lights."
}

def lights_message(language, number_of_lights):
    """Return a language-appropriate string reporting the light count."""
    return LIGHT_MESSAGES[language] % locals()

def is_pirate(message):
    """Return True if the given message sounds piratical."""
    return re.search(r"(?i)(arr|avast|yohoho)!", message) is not None

525
2017-09-11 10:06



Citant les documents officiels à https://docs.python.org/2.0/ref/strings.html:

En clair: Les littéraux de chaîne peuvent être placés entre des guillemets simples (') ou des guillemets doubles (").

Donc, il n'y a pas de différence. Au lieu de cela, les gens vous diront de choisir le style qui correspond au contexte, et être cohérent. Et je suis d'accord - ajoutant qu'il est inutile d'essayer de trouver des «conventions» pour ce genre de chose parce que vous ne finirez par dérouter les nouveaux arrivants.


96
2017-09-27 18:07



J'avais l'habitude de préférer ', en particulier pour '''docstrings''', comme je le trouve """this creates some fluff""". Aussi, ' peut être tapé sans Décalage touche sur mon clavier suisse allemand.

J'ai depuis changé à l'aide de guillemets pour """docstrings""", pour se conformer à PEP 257.


90
2017-09-11 08:55



Je suis avec Will:

  • Guillemets doubles pour le texte
  • Guillemets simples pour tout ce qui se comporte comme un identifiant
  • Double littéraux littéraux de chaîne brute pour les expressions rationnelles
  • Double guillemets triplés pour docstrings

Je m'en tiendrai à cela même si cela signifie beaucoup d'évasion.

Je tire le meilleur parti des identifiants à guillemets simples qui se distinguent par les cotations. Le reste des pratiques est là juste pour donner un espace à ces identifiants.


44
2017-09-11 10:21



Si la chaîne que vous avez contient, alors vous devriez utiliser l'autre. Par exemple, "You're able to do this", ou 'He said "Hi!"'. En dehors de cela, vous devez simplement être aussi cohérent que possible (dans un module, dans un package, dans un projet, dans une organisation).

Si votre code va être lu par des personnes qui travaillent avec C / C ++ (ou si vous basculez entre ces langages et Python), alors en utilisant '' pour les chaînes à un seul caractère, et "" pour des chaînes plus longues pourrait aider à faciliter la transition. (De même pour suivre d'autres langues où elles ne sont pas interchangeables).

Le code Python que j'ai vu à l'état sauvage tend à favoriser " plus de ', mais seulement légèrement. La seule exception est que """these""" sont beaucoup plus communs que '''these''', d'après ce que j'ai vu.


26
2017-09-11 08:33



Les commentaires entre guillemets sont un sous-thème intéressant de cette question. PEP 257 spécifie des guillemets pour les chaînes de doc. J'ai fait une vérification rapide en utilisant Google Code Search et trouvé que triple guillemets doubles en Python sont environ 10 fois plus populaires que triples quotes simples - 1.3M vs 131K occurrences dans les index Google de code. Donc, dans le cas des lignes multiples, votre code sera probablement plus familier aux gens s'il utilise des guillemets doubles.


21
2017-07-30 20:35



"If you're going to use apostrophes, 
       ^

you'll definitely want to use double quotes".
   ^

Pour cette simple raison, j'utilise toujours des guillemets doubles à l'extérieur. Toujours

En parlant de fluff, à quoi bon rationnaliser vos littéraux de chaînes avec «si vous allez devoir utiliser des caractères d'échappement pour représenter les apostrophes? Est-ce que cela offense les codeurs de lire des romans? Je ne peux pas imaginer à quel point le cours d'anglais du secondaire était douloureux pour vous!


13
2017-09-22 12:35