Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Why would I ever use anything else than %r in Python string formatting?

I occasionally use Python string formatting. This can be done like so:

print('int: %i. Float: %f. String: %s' % (54, 34.434, 'some text'))

But, this can also be done like this:

print('int: %r. Float: %r. String: %r' % (54, 34.434, 'some text'))

As well as using %s:

print('int: %s. Float: %s. String: %s' % (54, 34.434, 'some text'))

My question is therefore: why would I ever use anything else than the %r or %s? The other options (%i, %f and %s) simply seem useless to me, so I'm just wondering why anybody would every use them?

[edit] Added the example with %s

like image 440
kramer65 Avatar asked Jun 13 '13 07:06

kramer65


1 Answers

For floats, the value of repr and str can vary:

>>> num = .2 + .1
>>> 'Float: %f. Repr: %r Str: %s' % (num, num, num)
'Float: 0.300000. Repr: 0.30000000000000004 Str: 0.3'

Using %r for strings will result in quotes around it:

>>> 'Repr:%r Str:%s' % ('foo','foo')
"Repr:'foo' Str:foo"

You should always use %f for floats and %d for integers.

like image 171
Ashwini Chaudhary Avatar answered Sep 22 '22 17:09

Ashwini Chaudhary