Selon la documentation, ils sont à peu près interchangeables. Y a-t-il une raison stylistique d'utiliser l'un plutôt que l'autre ?
Réponses
Trop de publicités?J'aime utiliser des guillemets doubles autour des chaînes de caractères qui sont utilisées pour l'interpolation ou qui sont des messages en langage naturel, et des guillemets simples pour les petites chaînes de caractères ressemblant à des symboles, mais j'enfreindrai les règles si les chaînes de caractères contiennent des guillemets, ou si j'oublie. J'utilise des guillemets doubles triples pour les chaînes de caractères et les chaînes de caractères brutes 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
En citant les documents officiels à l'adresse https://docs.python.org/2.0/ref/strings.html :
En clair : Les chaînes de caractères peuvent être placées entre guillemets simples (') ou doubles (").
Il n'y a donc aucune différence. Au contraire, on vous dira de choisir le style qui correspond au contexte, et d'être cohérent . Et je suis d'accord - en ajoutant qu'il est inutile d'essayer d'élaborer des "conventions" pour ce genre de choses, car vous ne ferez qu'embrouiller les nouveaux venus.
J'avais l'habitude de préférer '
notamment pour '''docstrings'''
comme je trouve """this creates some fluff"""
. Aussi, '
peut être tapé sans le Shift sur mon clavier suisse allemand.
Depuis, j'utilise des guillemets triples pour """docstrings"""
pour se conformer à PEP 257 .
Je suis avec Will :
- Double guillemets pour le texte
- guillemets simples pour tout ce qui se comporte comme un identifiant
- Littéraux de chaînes brutes entre guillemets pour les regexps
- Double guillemets triples pour les docstrings
Je m'y tiendrai même si cela signifie beaucoup d'évasion.
Je tire le meilleur parti des identificateurs entre guillemets qui ressortent à cause des guillemets. Le reste des pratiques n'est là que pour donner à ces identificateurs uniques un peu de place.
Si la chaîne que vous avez contient l'une d'elles, vous devez 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 (au sein d'un module, d'un paquet, d'un projet, d'une organisation).
Si votre code est destiné à être lu par des personnes qui travaillent en C/C++ (ou si vous passez de ces langages à Python), alors l'utilisation de ''
pour les chaînes à un seul caractère, et ""
pour des cordes 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 dans la nature tend à favoriser "
sur '
mais seulement un peu. La seule exception est que """these"""
sont beaucoup plus courants que '''these'''
d'après ce que j'ai vu.