Virgolette singole contro virgolette doppie [chiuso]

75

Ho appena iniziato un lavoro in cui sto scrivendo Python dopo essere passato da uno sfondo Java e sto notando che altri sviluppatori tendono a citare stringhe usando virgolette singole ( '' ) invece di virgolette doppie ( "" ) . Ad esempio:

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

C'è una ragione particolare per questa diversa dalla preferenza personale? È questo il modo giusto per citare stringhe? Nello specifico, ciò che voglio sapere è se esiste un tipo di best practice standard o accettata che guida questo stile di codifica.

    
posta Eric Hydrick 02.07.2012 - 01:14
fonte

6 risposte

64

Le altre risposte sono corrette in quanto non fa alcuna differenza tecnica, ma ho visto una regola di stile informale su un paio di progetti open source: le doppie virgolette sono usate per le stringhe che potrebbero eventualmente essere visibili all'utente (se o non hanno bisogno di traduzione) e le virgolette singole sono per stringhe che si riferiscono alla funzionalità del codice stesso (ad esempio, chiavi dict, espressioni regolari, SQL).

Questa non è certamente una regola universale (o addirittura codificata in un PEP), quindi, come qualsiasi altro aspetto arbitrario della codifica, si tratta di regole locali.

Si noti che PEP 8 (che non avevo notato quando ho scritto questa risposta) dice :

This PEP does not make a recommendation for this. Pick a rule and stick to it. When a string contains single or double quote characters, however, use the other one to avoid backslashes in the string. It improves readability.

Come sottolinea un commentatore, questo non è necessariamente contraddittorio, a seconda di come interpreti la "regola". Tuttavia, ciò che suggerisco in realtà non funziona con la seconda parte della citazione.

    
risposta data 02.07.2012 - 03:22
fonte
18

È molto semplice:

  • Le virgolette singole consentono l'incorporamento senza escape delle doppie virgolette.
  • Le virgolette consentono l'incorporamento di virgolette singole senza escape.

È più Pythonic usare ' (virgolette singole) finché non hai bisogno di virgolette.

La seguente citazione è direttamente dalla documentazione su letterali String.

In plain English: String literals can be enclosed in matching single quotes (') or double quotes ("). They can also be enclosed in matching groups of three single or double quotes (these are generally referred to as triple-quoted strings). The backslash () character is used to escape characters that otherwise have a special meaning, such as newline, backslash itself, or the quote character. String literals may optionally be prefixed with a letter 'r' or 'R'; such strings are called raw strings and use different rules for interpreting backslash escape sequences. A prefix of 'u' or 'U' makes the string a Unicode string. Unicode strings use the Unicode character set as defined by the Unicode Consortium and ISO 10646. Some additional escape sequences, described below, are available in Unicode strings. A prefix of 'b' or 'B' is ignored in Python 2; it indicates that the literal should become a bytes literal in Python 3 (e.g. when code is automatically converted with 2to3). A 'u' or 'b' prefix may be followed by an 'r' prefix.

In triple-quoted strings, unescaped newlines and quotes are allowed (and are retained), except that three unescaped quotes in a row terminate the string. (A “quote” is the character used to open the string, i.e. either ' or ".)

    
risposta data 02.07.2012 - 03:23
fonte
16

Da un punto di vista tecnico non fa differenza, dal punto di vista dello stile alcuni pensieri:

  • La maggior parte degli altri linguaggi di programmazione utilizza virgolette doppie.
  • Quando scrivi in inglese di solito vengono usate virgolette doppie.
  • Le virgolette singole sono utili quando nella tua applicazione ci sono molti testi non tecnici / narrativi perché ti permettono di usare le virgolette doppie in un modo più naturale. %codice%
  • Dall'altro lato il carattere di citazione singola viene anche usato in alcune occasioni nella lingua inglese. %codice%
risposta data 02.07.2012 - 02:56
fonte
4

Alcune cose da considerare quando sviluppi la tua abitudine di usare regolarmente virgolette singole o doppie.

Le virgolette doppie richiedono due tasti; e quindi più probabile per errori di battitura e una diminuzione di velocità

Il tuo editor può mostrare un personaggio meglio di un altro; per semplificare il debug della sintassi visiva.

Le stringhe utilizzano caratteri tripli: quale aspetto ha di meglio? "" "" "" o "'' '' '

Anche se non l'ho visto su sistema operativo Windows, alcuni strumenti di sintassi o documentazione potrebbero prevedere virgolette singole a doppio verso.

Per la maggior parte delle esercitazioni Python che ho visto vedo l'opposto della tua esperienza. Di solito vedo le doppie virgolette usate.

    
risposta data 02.07.2012 - 03:27
fonte
4

A mio parere, preferisco utilizzare le virgolette doppie per una stringa.

Perché? Per i programmatori di altre lingue può essere adattato rapidamente e comprendere il codice più facilmente.

Se un programmatore C vede:

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

Sarà esitante, invece di:

"Writing \"It's big?\" No."
    
risposta data 02.07.2012 - 04:10
fonte
3

Non c'è differenza tra l'uso di virgolette singole e virgolette in Python. In termini pratici, a seconda del tipo di dati con cui stai lavorando, potresti trovare uno o l'altro stile più conveniente.

Il tipo di virgolette usate "per impostazione predefinita" (dove non vi è alcun motivo valido per usare l'una o l'altra) è praticamente una questione di preferenze personali.

Per ulteriori informazioni, consultare la sezione su String Literals nella documentazione di Python.

    
risposta data 02.07.2012 - 01:34
fonte

Leggi altre domande sui tag