On Learn Python the Hard Way page 21, I see this code example:
x = "There are %d types of people." % 10 ... print "I said: %r." % x
%r used here instead of
%s? When would you use
%r, and when would you use
For some objects such as integers, they yield the same result, but
repr() is special in that (for types where this is possible) it conventionally returns a result that is valid Python syntax, which could be used to unambiguously recreate the object it represents.
Here’s an example, using a date:
import datetime d = datetime.date.today() str(d) '2011-05-14' repr(d) 'datetime.date(2011, 5, 14)'
Types for which
repr() doesn’t produce Python syntax include those that point to external resources such as a
file, which you can’t guarantee to recreate in a different context.
%r for debugging, since it displays the “raw” data of the variable,
but the others are used for displaying to users.
%r formatting works; it prints it the way you wrote it (or close to it). It’s the “raw” format for debugging. Here
n used to display to users doesn’t work.
%r shows the representation if the raw data of the variable.
months = "nJannFebnMarnAprnMaynJunnJulnAug" print "Here are the months: %r" % months
Here are the months: 'nJannFebnMarnAprnMaynJunnJulnAug'
Check this example from Learn Python the Hard Way.
%r shows with quotes:
It will be like:
I said: 'There are 10 types of people.'.
If you had used
%s it would have been:
I said: There are 10 types of people..
This is a version of Ben James’s answer, above:
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) ... >>>
When I ran this, it helped me see the usefulness of %r.