Question

    

Cette question a déjà une réponse ici:

         

En PHP, une chaîne entourée de "guillemets doubles". seront analysés pour les variables à remplacer alors qu'une chaîne entre guillemets simples ne le sera pas. Est-ce que cela s'applique aussi en Python?

Était-ce utile?

La solution

Non :

  

2.4.1. Littéraux chaîne et octets

     

... En clair: les deux types de littéraux peuvent être placés entre guillemets simples ( ') ou doubles ( " ). Ils peuvent également être enfermés dans des groupes correspondants de trois guillemets simples ou doubles (ils sont généralement désignés sous le terme de chaînes à trois guillemets). La barre oblique inverse ( \ ) est utilisée pour échapper aux caractères qui ont une signification spéciale, tels que nouvelle ligne, la barre oblique inversée elle-même ou le caractère de citation ...

Autres conseils

Python est l’un des rares (?) langages où 'et' " ont une fonctionnalité identique. Le choix pour moi dépend généralement de ce qui est à l'intérieur. Si je cite une chaîne contenant des guillemets simples, je vais utiliser des guillemets et inversement pour réduire le nombre de caractères d’échappement dans la chaîne.

Exemples:

"this doesn't require escaping the single quote"
'she said "quoting is easy in python"'

Ceci est documenté dans la section "Chaînes littérales". page de la documentation python:

Dans certaines autres langues, les méta-caractères ne sont pas interprétés si vous utilisez des guillemets simples. Prenez cet exemple en Ruby:

irb(main):001:0> puts "string1\nstring2"
string1
string2
=> nil
irb(main):002:0> puts 'string1\nstring2'
string1\nstring2
=> nil

En Python, si vous souhaitez que la chaîne soit prise à la lettre, vous pouvez utiliser des chaînes brutes (une chaîne précédée du caractère 'r'):

>>> print 'string1\nstring2'
string1
string2
>>> print r'string1\nstring2'
string1\nstring2

Les chaînes entre guillemets simples et doubles entre guillemets Python sont identiques. La seule différence est que les chaînes entre guillemets simples peuvent contenir des guillemets doubles non échappés, et inversement. Par exemple:

'a "quoted" word'
"another 'quoted' word"

Là encore, il existe des chaînes triples, qui permettent d’échapper à la fois aux caractères de citation et aux nouvelles lignes.

Vous pouvez remplacer des variables dans une chaîne à l'aide de spécificateurs nommés et de la commande intégrée locals ():

name = 'John'
lastname = 'Smith'
print 'My name is %(name)s %(lastname)s' % locals()  # prints 'My name is John Smith'

L'interpréteur Python interactif préfère les guillemets simples:

>>> "text"
'text'

>>> 'text'
'text'

Cela pourrait être déroutant pour les débutants, je me contenterais donc de guillemets simples (à moins que vous n'ayez différentes normes de codage).

La différence entre " et 'string citation est juste dans le style - sauf que l'un supprime la nécessité d'échapper à l'autre dans le contenu de la chaîne.

Style

PEP8 recommande une règle cohérente, PEP257 suggère que les docstrings utilisent des guillemets doubles.

  

En Python, les chaînes entre guillemets simples et les chaînes à guillemets doubles sont les   même. Ce PPE ne fait aucune recommandation à ce sujet. Choisissez une règle   et s'y tenir. Lorsqu'une chaîne contient des guillemets simples ou doubles   caractères utilisent l’autre pour éviter les barres obliques inverses   chaîne. Cela améliore la lisibilité.

     

Pour les chaînes entre guillemets triples, utilisez toujours des guillemets doubles pour être   conforme à la convention docstring du PEP 257.

Largement utilisé est cependant la pratique de préférer les guillemets doubles pour les chaînes en langage naturel (y compris l'interpolation) - donc tout ce qui est potentiellement candidat pour I18N. Et des guillemets simples pour les chaînes techniques: symboles, caractères, chemins, options de ligne de commande, REGEX techniques, ...

(Par exemple, lors de la préparation du code pour I18N, je lance un REGEX semi-automatique qui convertit rapidement les chaînes entre guillemets pour utiliser, par exemple, gettext )

.

Il y a 3 façons de qouter des chaînes en python: " chaîne " 'chaîne' " " chaîne chaîne " " ils produisent tous le même résultat.

Il n’ya pas de différence en Python et vous pouvez vraiment l’utiliser à votre avantage lors de la génération de XML. La syntaxe XML correcte nécessite des guillemets autour des valeurs d'attributs. Dans de nombreux langages, tels que Java, vous devez les échapper pour créer une chaîne comme celle-ci:

String HtmlInJava = "<body bgcolor=\"Pink\">"

Mais en Python, vous utilisez simplement l'autre citation et assurez-vous d'utiliser la citation de fin correspondante, comme ceci:

html_in_python = '<body bgcolor="Pink">'

Assez sympa hein? Vous pouvez également utiliser trois guillemets pour commencer et terminer les chaînes multilignes, avec les EOL inclus comme ceci:

multiline_python_string = """
This is a multi-line Python string which contains line breaks in the 
resulting string variable, so this string has a '\n' after the word
'resulting' and the first word 'word'."""

Oui. Ceux qui prétendent que les guillemets simples et doubles sont identiques en Python ont tout simplement tort.

Sinon, dans le code suivant, la chaîne entre guillemets n'aurait pas pris plus de 4,5% de plus à traiter par Python:

import time

time_single = 0
time_double = 0

for i in range(10000000):
    # String Using Single Quotes
    time1 = time.time()
    str_single1 = 'Somewhere over the rainbow dreams come true'
    str_single2 = str_single1
    time2 = time.time()
    time_elapsed = time2 - time1
    time_single += time_elapsed

    # String Using Double Quotes 
    time3 = time.time()
    str_double1 = "Somewhere over the rainbow dreams come true"
    str_double2 = str_double1
    time4 = time.time()
    time_elapsed = time4 - time3
    time_double += time_elapsed

print 'Time using single quotes: ' + str(time_single)
print 'Time using double quotes: ' + str(time_double)

Sortie:

>python_quotes_test.py
Time using single quotes: 13.9079978466
Time using double quotes: 14.5360121727

Donc, si vous voulez nettoyer rapidement un code respectable dans lequel vous semblez connaître votre contenu, utilisez des guillemets simples pour les chaînes lorsque cela est pratique. Vous dépenserez également moins d’énergie en sautant la touche Maj.

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