Question

Selon la documentation, ils sont assez bien interchangeables.Est-il un choix de raison d'utiliser l'un plutôt que l'autre?

Était-ce utile?

La solution

J'aime utiliser des guillemets autour de chaînes de caractères qui sont utilisées pour l'interpolation ou qui sont en langage naturel des messages, et les guillemets simples pour les petites symbole-comme les chaînes, mais de briser les règles, si les chaînes contiennent des devis, ou si je l'oublie.J'utilise triple double de devis pour des docstrings premières et les littéraux de chaîne 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

Autres conseils

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

En clair:Les littéraux de chaîne peut être enfermé dans la correspondance de guillemets simples (') ou des guillemets (").

Donc, il n'y a pas de différence.Au lieu de cela, les gens vont dire à vous de choisir selon le style qui correspond le contexte, et pour être cohérent.Et je suis d'accord, ajoutant qu'il est inutile d'essayer de venir avec des "conventions" pour ce genre de chose parce que vous aurez seulement à confusion tout les nouveaux arrivants.

Je préfère ', en particulier pour les '''docstrings''', comme je l'ai trouver """this creates some fluff""".Aussi, ' peut être saisie sans l' Maj touche sur mon clavier Suisse allemand.

Depuis, j'ai changé à l'aide de trois devis pour des """docstrings""", pour se conformer à PEP 257.

Je suis avec vous:

  • Les guillemets doubles pour le texte
  • Les guillemets simples pour quoi que ce soit qui se comporte comme un identificateur
  • Double cité raw littéraux de chaîne pour les expressions régulières
  • Triplé des guillemets doubles pour docstrings

Je vais rester avec que, même si cela signifie beaucoup de s'échapper.

Je reçois le plus de valeur en dehors de la seule identificateurs de se démarquer en raison de la cite.Le reste de l'pratiques sont là juste pour donner les identificateurs certains debout.

Si la chaîne que vous avez contient un, alors vous devriez utiliser les autres.Par exemple, "You're able to do this", ou 'He said "Hi!"'.Autre que cela, il vous suffit de l'être aussi cohérentes que possible (à l'intérieur d'un module, à l'intérieur d'un paquet, au sein d'un projet, au sein d'une organisation).

Si votre code va être lu par des gens qui travaillent avec C/C++ (ou si vous basculez entre ces langues et Python), puis à l'aide de '' pour une seule des chaînes de caractères, et "" pour de plus longues chaînes peuvent aider à faciliter la transition.(De même pour la suite d'autres langues où ils ne sont pas interchangeables).

Le code Python que j'ai vu dans la nature tend à privilégier " plus ', mais seulement légèrement.La seule exception est que """these""" sont beaucoup plus fréquents que '''these''', d'après ce que j'ai vu.

Triple cité les commentaires sont intéressants sous-thème de cette question. PEP 257 spécifie triple de devis pour des chaînes de doc.J'ai fait une rapide vérification à l'aide de Google Recherche de Code et a constaté que triple guillemets en Python sont sur 10x aussi populaire que triple guillemets simples -- 1,3 M vs 131K occurrences dans le code de Google index.Ainsi, dans le multi-ligne cas, votre code sera probablement plus familier pour les gens si il utilise un triple double guillemets.

"If you're going to use apostrophes, 
       ^

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

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

En parlant de peluches, à quoi bon la rationalisation de votre littéraux de chaîne avec des " si vous allez avoir à utiliser des caractères d'échappement pour représenter les apostrophes?Est-il offenser les codeurs de lire des romans?Je ne peux pas imaginer à quel point les anglais dans une école secondaire de la classe, c'était pour vous!

Python utilise des citations à quelque chose comme ceci:

mystringliteral1="this is a string with 'quotes'"
mystringliteral2='this is a string with "quotes"'
mystringliteral3="""this is a string with "quotes" and more 'quotes'"""
mystringliteral4='''this is a string with 'quotes' and more "quotes"'''
mystringliteral5='this is a string with \"quotes\"'
mystringliteral6='this is a string with \042quotes\042'
mystringliteral6='this is a string with \047quotes\047'

print mystringliteral1
print mystringliteral2
print mystringliteral3
print mystringliteral4
print mystringliteral5
print mystringliteral6

Ce qui donne le résultat suivant:

this is a string with 'quotes'
this is a string with "quotes"
this is a string with "quotes" and more 'quotes'
this is a string with 'quotes' and more "quotes"
this is a string with "quotes"
this is a string with 'quotes'

J'utilise des guillemets en général, mais pas pour une raison spécifique - Probablement juste de sortir de l'habitude de Java.

Je suppose que vous êtes également plus susceptibles de vouloir apostrophes dans une ligne de chaîne littérale que vous êtes à l'envie de guillemets doubles.

Personnellement je m'en tiens à l'un ou l'autre.Il n'a pas d'importance.Et en fournissant votre propre sens, soit de la citation est juste à confondre d'autres personnes lorsque vous collaborez.

C'est probablement une préférences stylistiques, plus que tout.Je viens de vérifier PEP 8 et ne vois pas de mention de l'unique rapport entre des guillemets doubles.

Je préfère unique entre guillemets parce que sa seule frappe au lieu de deux.C'est, je n'ai pas à écraser la touche maj pour faire simple citation.

En Perl, vous souhaitez utiliser des guillemets simples lorsque vous avez une chaîne qui n'a pas besoin d'interpolation de variables ou de caractères d'échappement comme le , , , etc.

PHP fait la même distinction que Perl:contenu dans des guillemets simples ne sera pas interprété (même pas seront convertis), par opposition à des guillemets doubles qui peuvent contenir des variables d'avoir leur valeur imprimée.

Python n'a pas, je le crains.Techniquement vu, il n'y a pas de $ token (ou similaire) pour séparer un nom/texte à partir d'une variable en Python.Les deux caractéristiques font de Python plus lisible, moins confus, après tout.Les guillemets simples et doubles peuvent être utilisés de façon interchangeable dans Python.

J'ai choisi d'utiliser des guillemets parce qu'ils sont plus faciles à voir.

Je viens de l'utiliser quel que soit frappe mon imagination à l'époque;c'est pratique pour être en mesure de basculer entre les deux à un coup de tête!

Bien sûr, lorsque l'on cite cite characetrs, la commutation entre les deux pourrait ne pas être si lunatique, après tout...

Votre équipe de goût ou de votre projet de directives de codage.

Si vous êtes dans un environnement multilingue, vous pourriez souhaiter pour encourager l'utilisation du même type de devis pour des chaînes que l'autre langue utilise, par exemple.Sinon, personnellement, j'aime mieux le look de '

Aucun autant que je sache.Mais si vous regardez un peu de code", "est couramment utilisée pour les chaînes de texte (je suppose que' est plus fréquente à l'intérieur du texte que "), et "" apparaît dans hashkeys et des choses comme ça.

Je cherche à minimiser à la fois les pixels et de la surprise.En général, je préfère ' afin de minimiser les pixels, mais " en revanche si la chaîne a une apostrophe, de nouveau afin de minimiser les pixels.Pour une docstring, cependant, je préfère """ plus ''' parce que ce dernier est non-standard, rare, et donc de surprenant.Si maintenant, j'ai un tas de chaînes où j'ai utilisé " par la logique ci-dessus, mais aussi celui qui peut sortir avec un ', Je peut toujours l'utiliser " dans pour préserver la cohérence, seulement à minimiser surprise.

Peut-être qu'il aide à penser à de la pixels de la minimisation de la philosophie de la manière suivante.Préférez-vous que les caractères anglais ressemblait A B C ou AA BB CC?Le dernier choix de déchets de 50% de la non-vide pixels.

J'utilise des guillemets parce que j'ai fait pendant des années dans la plupart des langages (C++, Java, VB...) à l'exception de Bash, parce que j'ai aussi d'utiliser des guillemets dans le texte normal et parce que je suis à l'aide d'un (modifié) les non-anglais clavier où les deux personnages exiger la touche maj enfoncée.

' = "

/ = \ = \\

exemple :

f = open('c:\word.txt', 'r')
f = open("c:\word.txt", "r")
f = open("c:/word.txt", "r")
f = open("c:\\\word.txt", "r")

Les résultats sont les mêmes

=>> non, ils ne sont pas les mêmes.Une seule barre oblique inverse sera caractères d'échappement.Vous venez d'arriver à la chance dans cet exemple parce que \k et \w ne sont pas valides comme s'échappe \t ou \n ou \\ ou \"

Si vous souhaitez utiliser des barres obliques inverses (et les ont interprétés comme tels), alors vous devez utiliser un "brut" de la chaîne.Vous pouvez le faire en mettant un"r"en face de la chaîne

im_raw = r'c:\temp.txt'
non_raw = 'c:\\temp.txt'
another_way = 'c:/temp.txt'

Aussi loin que les chemins d'accès dans Windows sont concernés, barres obliques sont interprétées de la même manière.Clairement la chaîne elle-même est différent.Je n'aurais pas de garantir qu'elles sont traitées de cette façon sur un périphérique externe si.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top