String formatting % vs. .format vs. f-string literal
Interview Questions practice on Codemia
Over 8,000 real interview questions from top companies, searchable by company and role.
String formatting in Python refers to the process of inserting variables into strings. This technique is crucial for creating dynamic and easy-to-update messages or outputs in your programs. Python supports several methods for string formatting, each with its advantages and particular syntax. This article discusses the three primary methods: the old-style % formatting, the str.format() method, and the newer f-string literal introduced in Python 3.6.
1. Percent (%) Formatting
Percent formatting, also known as printf-style formatting, is borrowed from the C programming language. It uses % symbols as placeholders which get replaced by the values of variables.
Syntax:
Here, %s is used for strings, and %d is for integers. The variables to insert are provided as a tuple following the % operator.
Pros:
- Familiar to those who have experience with C or similar syntax.
- Concise for simple formatting tasks.
Cons:
- It can become complicated and less readable with multiple parameters.
- Less flexible compared to other techniques, lacking some advanced formatting features.
2. The str.format() Method
Introduced in Python 2.6, str.format() is more powerful than % formatting. It uses curly braces {} as placeholders.
Syntax:
You can also include indices within the curly braces to specify the order:
Pros:
- More flexible, supporting positional and keyword arguments.
- More readable with named placeholders.
Cons:
- Slightly more verbose than
%formatting. - The syntax might feel more cumbersome for simple tasks.
3. f-String Literal (Formatted String Literals)
f-strings were introduced with Python 3.6 to simplify string formatting. They have a concise syntax, using f before the string and curly braces containing expressions that will be replaced directly.
Syntax:
Their speed and readability make f-strings a popular choice for Python programmers.
Pros:
- Concise and easy to read.
- Fastest among the string formatting methods.
- Expressions inside curly braces can be Python expressions.
Cons:
- Only available in Python 3.6 and later.
- Care must be taken not to introduce errors by embedding complex expressions.
Comparing the Methods
Here's a quick comparison in a table format:
| Feature | % Formatting | .format() | f-string |
| Python Version | 2.x, 3.x | 2.6+, 3.x | 3.6+ |
| Readability | Low | Medium | High |
| Flexibility | Low | High | High |
| Speed | Moderate | Moderate | Fast |
| Inline expression | No | No | Yes |
| Named Placeholders | No | Yes | Yes |
Conclusion
While % formatting and the str.format() method still have their uses, f-strings provide a modern, readable, and performant way of formatting strings in Python. Choosing the right method depends on your Python version, specific needs, and personal preference for syntax. However, when using Python 3.6 and later, f-strings are generally recommended for most situations due to their ease of use and performance.
Related reading
- String formatting vs. .format vs. f-string literal
- String similarity metrics in Python
- String to Dictionary in Python
- Strip HTML from strings in Python
- Stripping everything but alphanumeric chars from a string in Python
- str.startswith with a list of strings to test for
- Subclass in type hinting
- Substitute multiple whitespace with single whitespace in Python
.png&w=3840&q=75)
Tackling System Design Interview Problems
A short course that equips you with the skills to approach system design interviews methodically.
Start the free courseTrack what you have practised
A free account saves your progress, solutions and study plan across every problem on Codemia.
Interview Questions practice on Codemia
Over 8,000 real interview questions from top companies, searchable by company and role.