Domanda

    

Questa domanda ha già una risposta qui:

         

In PHP, una stringa racchiusa tra " virgolette doppie " verrà analizzato per la sostituzione delle variabili mentre una stringa racchiusa tra "virgolette singole" no. In Python, vale anche questo?

È stato utile?

Soluzione

No :

  

2.4.1. Letterali stringa e byte

     

... In parole povere: entrambi i tipi di letterali possono essere racchiusi tra virgolette singole corrispondenti ( ') o virgolette doppie ( " ). Possono anche essere racchiusi in gruppi corrispondenti di tre virgolette singole o doppie (generalmente denominate stringhe a tre virgolette). Il carattere barra rovesciata ( \ ) viene utilizzato per sfuggire ai caratteri che altrimenti hanno un significato speciale, come newline, barra rovesciata stessa o il carattere di citazione ...

Altri suggerimenti

Python è una delle poche (?) lingue in cui 'e " hanno funzionalità identiche. La scelta per me di solito dipende da cosa c'è dentro. Se sto per citare una stringa che contiene virgolette singole, userò le virgolette doppie e viceversa, per ridurre la necessità di sfuggire ai caratteri nella stringa.

Esempi:

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

Questo è documentato su " String Literals " pagina della documentazione di Python:

In alcune altre lingue, i meta caratteri non vengono interpretati se si utilizzano virgolette singole. Prendi questo esempio in Ruby:

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

In Python, se vuoi che la stringa sia presa alla lettera, puoi usare stringhe grezze (una stringa preceduta dal carattere 'r'):

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

Le stringhe tra virgolette singole e doppie in Python sono identiche. L'unica differenza è che le stringhe a virgoletta singola possono contenere caratteri di virgolette doppie senza caratteri di escape e viceversa. Ad esempio:

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

Quindi, ci sono stringhe a tre virgolette, che consentono di annullare il escape sia dei caratteri di virgoletta che delle nuove righe.

Puoi sostituire le variabili in una stringa usando gli identificatori nominati e il local () incorporato:

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

L'interprete interattivo di Python preferisce virgolette singole:

>>> "text"
'text'

>>> 'text'
'text'

Questo potrebbe essere fonte di confusione per i principianti, quindi rimarrei con virgolette singole (a meno che tu non abbia standard di codifica diversi).

La differenza tra " e 'la citazione della stringa è solo nello stile - tranne per il fatto che l'una elimina la necessità di sfuggire all'altra all'interno del contenuto della stringa.

Stile

PEP8 raccomanda una regola coerente, PEP257 suggerisce che i docstring usano virgolette doppie triple.

  

In Python, stringhe a virgoletta singola e stringhe a virgolette doppie sono le   stesso. Questo PEP non fornisce raccomandazioni per questo. Scegli una regola   e attenersi ad esso. Quando una stringa contiene virgolette singole o doppie   i personaggi, tuttavia, usano l'altro per evitare le barre rovesciate nel file   stringa. Migliora la leggibilità.

     

Per stringhe con virgolette triple, utilizzare sempre i caratteri di virgolette doppie   in linea con la convenzione sulla dottring del PEP 257.

Ampiamente usata, tuttavia, è la pratica per preferire le virgolette doppie per le stringhe del linguaggio naturale (compresa l'interpolazione), quindi tutto ciò che è potenzialmente candidato per I18N. E virgolette singole per stringhe tecniche: simboli, caratteri, percorsi, opzioni della riga di comando, REGEX tecnici, ...

(Ad esempio, durante la preparazione del codice per I18N, eseguo un REGEX semiautomatico che converte rapidamente stringhe tra virgolette doppie per l'utilizzo, ad esempio, gettext )

Ci sono 3 modi in cui puoi qoute le stringhe in Python: & Quot; stringa " 'stringa' & Quot; " " stringa stringa & Quot; " " producono tutti lo stesso risultato.

Non c'è differenza in Python e puoi davvero usarlo a tuo vantaggio durante la generazione di XML. La sintassi XML corretta richiede virgolette doppie attorno ai valori degli attributi e in molte lingue, come Java, questo ti costringe a scappare quando crei una stringa come questa:

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

Ma in Python, usi semplicemente l'altra citazione e assicurati di usare la citazione finale corrispondente in questo modo:

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

Abbastanza bello eh? Puoi anche usare tre virgolette doppie per iniziare e terminare le stringhe multilinea, con le EOL incluse in questo modo:

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'."""

Sì. Coloro che affermano che le virgolette singole e doppie sono identiche in Python hanno semplicemente torto.

Altrimenti nel codice seguente, la stringa tra virgolette doppie non avrebbe richiesto un ulteriore 4,5% in più per l'elaborazione di 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)

Output:

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

Quindi, se vuoi un codice rispettabile veloce e pulito dove sembri conoscere le tue cose, usa le virgolette singole per le stringhe ogni volta che è pratico. Spenderai anche meno energia saltando il tasto Maiusc.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top