When should I use %r instead of %s in Python?
When to Use %r Instead of %s in Python
In this article, we’ll explain when to use %r
instead of %s
in Python, and the differences between them. In Python, both %r
and %s
are used to format strings. The main difference between them lies in how they handle different types of objects.
Read More: Python Tutorial
The Difference Between %r
and %s
%r
and %s
are both string formatting operators, used to insert the value of a variable into another string. The difference between the two is that %r
uses the repr()
function to represent the variable’s value in the result, while %s
uses the str()
function.
The repr()
function returns a string containing the object in a way that can be recreated in the interpreter. It typically returns a quoted string and escapes special characters.
The str()
function returns a more human-readable string representation. It does not include quotes or escape special characters.
When to Use %r
Here are some situations where you should use %r
:
– When you need to display the full representation of an object in a string, regardless of its type.
– When you need to debug code and see the values of special, escaped, or non-ASCII characters.
Let’s look at some examples to illustrate when to use %r
.
name = "Alice"
print("Hello, %r!" % name)
The output will be Hello, 'Alice'!
. In this example, we use %r
to display the full representation of the variable name
, including the quotes.
age = 25
print("I am %r years old." % age)
The output will be I am 25 years old.
. Here, we use %r
to display the value of the variable age
, rather than using %s
. While both output the same value in this example, using %r
better expresses the variable’s type.
info = {"name": "Bob", "age": 30}
print("Information: %r" % info)
The output will be Information: {'name': 'Bob', 'age': 30}
. In this example, we use %r
to display the complete representation of the dictionary info
, including the braces and quotes.
When to Use %s
Here are some situations where you should use %s
:
– When you need to display a readable string to the user, especially when you don’t need to display the full representation of the object.
– When you need to convert an object to a string and pass it to a function that accepts a string as an argument.
Let’s look at some examples to illustrate when to use %s
.
name = "Alice"
print("Hello, %s!" % name)
The output will be Hello, Alice!
. In this example, we use %s
to display a human-readable string representation of the variable name
, without the quotes.
age = 25
print("I am %s years old." % age)
The output will be I am 25 years old.
. Here, we use %s
to display the value of the variable age
, rather than using %r
. Although both produce the same output in this example, using %s
is more appropriate in this case because we only want to display a human-readable string.
info = {"name": "Bob", "age": 30}
print("Information: %s" % info)
The output will be Information: {'name': 'Bob', 'age': 30}
. In this example, we use %s
to display a human-readable string representation of the dictionary info
, without the braces and quotes.
Summary
In Python, %r
and %s
are both operators used to format strings. The difference between them lies in the functions they use: repr()
and str()
, respectively. %r
returns a string representation used by the interpreter to recreate the object, while %s
returns a human-readable string representation.
Use %r
when you need to display the full representation of an object in a string. Use %s
when you need to display a readable string to the user or convert an object to a string and pass it to a function that accepts a string as an argument.
I hope this article helps you understand the difference between %r
and %s
. In real-world programming, choosing the appropriate formatting operator can make your code clearer and easier to read.