web-dev-qa-db-fra.com

Citations simples vs guillemets doubles

Je viens de commencer un travail où j'écris Python après être venu d'un arrière-plan Java, et je remarque que d'autres développeurs ont tendance à citer des chaînes à l'aide de single guillemets ('') au lieu de guillemets doubles (""). Par exemple:

line1 = 'This is how strings typically look.'
line2 = "Not like this."

Y a-t-il une raison particulière à cela autre que la préférence personnelle? Est-ce la bonne façon de citer des chaînes? Plus précisément, ce que je veux savoir, c'est s'il existe un type de meilleure pratique standard ou acceptée qui anime ce style de codage.

82
Eric Hydrick

Les autres réponses sont correctes en ce sens que cela ne fait aucune différence technique, mais j'ai vu une règle de style informelle sur quelques projets open source: les guillemets doubles sont utilisés pour les chaînes qui pourraient éventuellement être visibles par l'utilisateur (qu'il en ait besoin ou non) traduction) et les guillemets simples sont pour les chaînes qui se rapportent à la fonctionnalité du code lui-même (par exemple, les clés dict, les expressions régulières, SQL).

Ce n'est certainement pas une règle universelle (ou même codifiée dans un PEP), donc comme tout autre aspect arbitraire du codage, cela revient aux règles locales.

Notez que PEP 8 (que je n'avais pas remarqué quand j'ai écrit cette réponse) dit :

Ce PEP ne fait aucune recommandation à ce sujet. Choisissez une règle et respectez-la. Cependant, lorsqu'une chaîne contient des guillemets simples ou doubles, utilisez l'autre pour éviter les barres obliques inverses dans la chaîne. Il améliore la lisibilité.

Comme le souligne un commentateur, ce n'est pas nécessairement contradictoire, selon la façon dont vous interprétez la "règle". Ce que je suggère ne fonctionne pas vraiment avec la deuxième moitié de la citation.

66
detly

C'est très simple:

  • Les guillemets simples permettent l'incorporation ininterrompue de guillemets doubles.
  • Les guillemets doubles permettent d'incorporer des guillemets simples non échappés.

Il est plus Pythonic d'utiliser ' (guillemets simples) jusqu'à ce que vous ayez besoin de guillemets doubles.

La citation suivante provient directement de la documentation sur les littéraux de chaîne.

En clair: les littéraux de chaîne peuvent être placés entre guillemets simples (') ou doubles ("). Ils peuvent également être placés dans des groupes correspondants de trois guillemets simples ou doubles (ceux-ci sont généralement appelés chaînes à guillemets triples). Le caractère barre oblique inverse () est utilisé pour échapper les caractères qui ont autrement une signification spéciale, tels que la nouvelle ligne, la barre oblique inverse elle-même ou le caractère de citation. Les littéraux de chaîne peuvent éventuellement être précédés d'une lettre "r" ou "R"; ces chaînes sont appelées des chaînes brutes et utilisent différentes règles pour interpréter les séquences d'échappement de barre oblique inversée. Un préfixe "u" ou "U" fait de la chaîne une chaîne Unicode. Les chaînes Unicode utilisent le jeu de caractères Unicode tel que défini par le consortium Unicode et ISO 10646. Certaines séquences d'échappement supplémentaires , décrits ci-dessous, sont disponibles dans les chaînes Unicode. Un préfixe 'b' ou 'B' est ignoré dans Python 2; il indique que le littéral devrait devenir un littéral d'octets dans Python 3 (par exemple lorsque le code est automatiquement converti avec 2to3). Un préfixe "u" ou "b" peut être suivi d'un préfixe "r".

Dans les chaînes entre guillemets triples, les retours à la ligne et les guillemets non échappés sont autorisés (et sont conservés), sauf que trois guillemets non échappés d'affilée terminent la chaîne. (Une "citation" est le caractère utilisé pour ouvrir la chaîne, c'est-à-dire 'ou ".)

21
user7519

D'un point de vue technique, cela ne fait aucune différence, du point de vue du style, quelques réflexions:

  • La plupart des autres langages de programmation utilisent des guillemets doubles.
  • Lors de l'écriture en anglais, des guillemets sont généralement utilisés.
  • Les guillemets simples sont utiles lorsque vous avez beaucoup de texte non technique/narratif dans votre application, car ils vous permettent d'utiliser des guillemets doubles de manière plus naturelle. bar = '"It\'s awesome" he said.'
  • De l'autre côté, le caractère guillemet simple est également utilisé à quelques reprises en anglais. bar = "\"It's awesome\" he said."
17
API-Beast

Il n'y a aucune différence entre l'utilisation de guillemets simples et de guillemets doubles en Python. Concrètement, selon le type de données avec lesquelles vous travaillez, vous pouvez trouver l'un ou l'autre style plus pratique.

Le type de guillemets utilisé "par défaut" (lorsqu'il n'y a aucune raison impérieuse d'utiliser l'un ou l'autre) est à peu près une question de préférence personnelle.

Pour plus d'informations, consultez la section String Literals dans la documentation Python.

4
Greg Hewgill

Certaines choses à considérer lors du développement de votre habitude d'utiliser régulièrement des guillemets simples ou doubles.

Les guillemets doubles nécessitent une saisie à deux doigts; et donc plus probable pour les erreurs de frappe ainsi qu'une diminution de la vitesse

Votre éditeur peut montrer un personnage mieux qu'un autre; pour un débogage de la syntaxe visuelle plus facile.

Les Docstrings utilisent des caractères triples: lequel a l'air mieux? """""" ou ''''''

Bien que je ne l'ai pas vu sur Windows OS, certains outils de syntaxe ou de documentation peuvent s'attendre à des guillemets simples à double verset.

Pour la plupart des tutoriels Python que j'ai vus, je vois le contraire de votre expérience. Je vois généralement des guillemets utilisés.

4
DevPlayer

À mon avis, je préfère utiliser le guillemets doubles pour une chaîne.

Pourquoi? Pour les programmeurs de autres langues peut être adapté rapidement et comprendre le code plus facilement.

Si un programmeur C voit:

'Writing "It\'s big?" No.'

Sera hésitant, au lieu de:

"Writing \"It's big?\" No."
4
Lucio