2012-10-26 8 views
7

Mi stavo chiedendo qual è la differenza tra i due modi di scrittura docstring Python (__doc__):La differenza tra tre singoli quote'd e tre docstring quote'd matrimoniali in pitone

  1. tre virgolette singole:

    ''' 
    Comment goes here 
    ''' 
    
  2. tre doppi apici:

    """ 
    Comment goes here 
    """ 
    

C'è qualche sottile differenza nel modo in cui la stringa doc può essere formattata in seguito durante la generazione di documenti?

+1

Nota: una "stringa doc" è solo una * normale * stringa letterale per quanto riguarda la sintassi Python/parser. Le stesse regole per '" "" ',' '' ',' "', e '' 'si applicano. –

risposta

10

No. Sono uguali. L'unica differenza è che il primo può contenere una sequenza di tre virgolette doppie senza escape, mentre il secondo può contenere una sequenza di tre virgolette singole senza escape. (In altre parole, poiché i delimitatori sono diversi, c'è una leggera differenza in quali caratteri si possono usare al loro interno.)

Le stringhe sono stringhe regolari e in Python non c'è differenza tra i diversi delimitatori di stringa, ad eccezione di che, ovviamente, non è possibile utilizzare il delimitatore di stringhe all'interno della stringa.

+0

Hai detto: "tu non posso usare il delimitatore di stringhe all'interno della stringa ", ma l'ho provato in python3:" foo = "" "abc" def "" "' che ha successo, e foo ha il valore: ''abc" def''. interessante: 'foo =" "" abc "'def" "" 'è anche legale, producendo:'' abc "\ 'def''. –

+2

@EricLeschinski: In tal caso, il delimitatore di stringa è" "" "' (cioè, tre virgolette doppie), non "". – BrenBarn

4

Scegli lo stile che preferisci. Personalmente uso le virgolette singole ovunque Posso in Python.

I documentation stati:

"String literals can be enclosed in matching single quotes (') or double quotes (")." 

Non importa che uno si decide di utilizzare. Ciò che importa è che tu rispetta la decisione . È buona norma scegliere uno stile e attenersi ad esso.

+0

Grazie @ Estete. Ma, sono particolarmente interessato a capire questo per doc_strings (__doc__) per funzioni e classi. – prashu

+0

@prashu Un doc-strring è solo .. una stringa. È solo * convenzione * (forse indicato in un PEP da qualche parte?) Per usare le virgolette "" "" o '" ", in genere per rendere la vita più facile o più coerente o per portare avanti una tradizione .. ed è concepibile che alcuni strumenti di ispezione del codice scritti male lo richiedono (ma sono strumenti rotti), tuttavia si applicano le stesse regole letterali della stringa: provalo! –

+0

Una stringa è una stringa è una stringa in Python. – Aesthete

2

Non importa molto. Ma, per quello che vale gli esempi mostrati in PEP 257 -- Docstring Conventions tutti usano "" "triple virgolette" "".

Per coerenza, utilizzare sempre "" "virgolette doppie" "" intorno a docstrings. Usa r "" "virgolette doppie doppie" "" se usi le barre rovesciate nelle tue docstring. Per le docstring Unicode, utilizzare u "" "Stringhe con virgolette Unicode" "".