Python’s f-strings vs. str()

A few months ago I’ve seen a tweet from a Python learner with a code snippet containing f-strings. I asked, why she’s not using format() . She answered, that this is the new way of formatting strings. I was curious about it as I didn’t hear about it before. Seeing other people using it, I started to do it as well.

Two weeks ago I spotted a Pull Request on GitHub where somebody used f-strings to convert a value to a string as in the example below.

I was surprised by the usage of f-strings in this particular case. Another user commented to use str() instead. This conversation led me to the question, which one of both is faster as it was a computationally intensive piece of code.

Using boxx.timeit showed me the not irrelevant time difference.

“f-strings” spend time: 0.08900404"str” spend time: 0.160588

Wondering why this is the case? Looking at the byte code gives us the answer. Python provides a module for such cases, the Disassemble-Module. Let’s have a closer look at what’s happening.

The result is shown below.

As you can see the str_string method consists of one more command (CALL_FUNCTION). Function calls are expensive and f-strings don’t need to call a separate function.

To summarize f-strings are faster than str() in terms of converting integers and such types to string. But keep in mind, that we only had a look at simple types. How they perform on more complex types is currently out of my knowledge as I didn’t test it.

Feel free to leave a comment with your own thoughts. Stay curious and keep coding!