In Python format (f-string) strings, what does !r mean?

nk abram picture nk abram · Jun 28, 2017 · Viewed 7.4k times · Source

I get what the new f strings in python 3.6 do, but what about the ending !r as found in the code snip below.

def __repr__(self):
    return (f'Pizza({self.radius!r}, 'f'{self.ingredients!r})')

Answer

Dimitris Fasarakis Hilliard picture Dimitris Fasarakis Hilliard · Jun 28, 2017

It just calls the repr of the value supplied.

It's usage is generally not really needed with f-strings since with them you can just do repr(self.radius) which is arguably more clear in its intent.

!r (repr), !s (str) and !a (ascii) were kept around just to ease compatibility with the str.format alternative, you don't need to use them with f-strings.