webentwicklung-frage-antwort-db.com.de

Wann soll in Python% r anstelle von% s verwendet werden?

Auf Learn Python the Hard Way Seite 21 sehe ich folgendes Codebeispiel:

x = "There are %d types of people." % 10
...
print "I said: %r." % x

Warum wird hier %r Anstelle von %s Verwendet? Wann würden Sie %r Verwenden und wann würden Sie %s Verwenden?

157
coffee-grinder

Der Bezeichner %s Konvertiert das Objekt mit str() , und %r Konvertiert es mit repr() =.

Für einige Objekte, wie z. B. Ganzzahlen, erhalten Sie dasselbe Ergebnis, aber repr() ist insofern besonders (für Typen, bei denen dies möglich ist), als es herkömmlicherweise ein gültiges Ergebnis zurückgibt Python -Syntax, mit der das dargestellte Objekt eindeutig neu erstellt werden kann.

Hier ist ein Beispiel mit einem Datum:

>>> import datetime
>>> d = datetime.date.today()
>>> str(d)
'2011-05-14'
>>> repr(d)
'datetime.date(2011, 5, 14)'

Typen, für die repr() keine Python -Syntax erzeugt, enthalten solche, die auf externe Ressourcen verweisen, z. B. file, die Sie verwenden können. ' t garantieren, in einem anderen Kontext neu zu erstellen.

302
Ben James

Verwenden Sie die %r zum Debuggen, da die "Rohdaten" der Variablen angezeigt werden, die anderen werden jedoch zum Anzeigen für Benutzer verwendet.

So geht das %r Formatierung funktioniert; Es druckt es so aus, wie Sie es geschrieben haben (oder in der Nähe davon). Es ist das "Raw" -Format zum Debuggen. Hier \n zur Anzeige für Benutzer funktioniert nicht. %r zeigt die Darstellung der Rohdaten der Variablen.

months = "\nJan\nFeb\nMar\nApr\nMay\nJun\nJul\nAug"
print "Here are the months: %r" % months

Ausgabe:

Here are the months: '\nJan\nFeb\nMar\nApr\nMay\nJun\nJul\nAug'

Aktivieren Sie dieses Beispiel from Learn Python the Hard Way.

15
Pramod Bhat

%r Zeigt mit Anführungszeichen:

Es wird sein wie:

I said: 'There are 10 types of people.'.

Wenn Sie %s Verwendet hätten, wäre es gewesen:

I said: There are 10 types of people..
15
manojlds

Dies ist eine Version von Ben James 'Antwort oben:

>>> import datetime
>>> x = datetime.date.today()
>>> print x
2013-01-11
>>> 
>>> 
>>> print "Today's date is %s ..." % x
Today's date is 2013-01-11 ...
>>> 
>>> print "Today's date is %r ..." % x
Today's date is datetime.date(2013, 1, 11) ...
>>>

Als ich dies ausführte, half es mir, die Nützlichkeit von% r zu erkennen.

14
macloo