Python F-strings: a Practical Guide to F-strings in Python (2024)

Summary: in this tutorial, you’ll learn about Python F-strings and how to use them to format strings and make your code more readable.

Introduction to the Python F-strings

Python 3.6 introduced the f-strings that allow you to format text strings faster and more elegant. The f-strings provide a way to embed variables and expressions inside a string literal using a clearer syntax than the format() method.

For example:

name = 'John's = f'Hello, {name}!'print(s)Code language: Python (python)

Output:

Hello, John!Code language: Python (python)

How it works.

  • First, define a variable with the value 'John'.
  • Then, place the name variable inside the curly braces {} in the literal string. Note that you need to prefix the string with the letter f to indicate that it is an f-string. It’s also valid if you use the letter in uppercase (F).
  • Third, print out the string s.

It’s important to note that Python evaluates the expressions in f-string at runtime. It replaces the expressions inside an f-string with their values.

Python f-string examples

The following example calls the upper() method to convert the name to uppercase inside the curly braces of an f-string:

name = 'John's = F'Hello, {name.upper()}!'print(s)Code language: Python (python)

Output:

Hello, JOHN!Code language: Python (python)

The following example uses multiple curly braces inside an f-string:

first_name = 'John'last_name = 'Doe's = F'Hello, {first_name} {last_name}!'print(s)Code language: Python (python)

Output:

Hello, John Doe!Code language: Python (python)

This example is equivalent to the above example but uses the join() method:

first_name = 'John'last_name = 'Doe's = F'Hello, {" ".join((first_name, last_name))}!'print(s)Code language: Python (python)

Output:

Hello, John Doe!Code language: Python (python)

Multiline f-strings

Python allows you to have multiline f-strings. To create a multiline f-string, you place the letter f in each line. For example:

name = 'John'website = 'PythonTutorial.net'message = ( f'Hello {name}. ' f"You're learning Python at {website}." )print(message)Code language: Python (python)

Output:

Hello John. You're learning Python on PythonTutorial.net.Code language: Python (python)

If you want to spread an f-string over multiple lines, you can use a backslash (\) to escape the return character like this:

name = 'John'website = 'PythonTutorial.net'message = f'Hello {name}. ' \ f"You're learning Python at {website}." print(message)Code language: Python (python)

The following example shows how to use triple quotes (""") with an f-string:

name = 'John'website = 'PythonTutorial.net'message = f"""Hello {name}.You're learning Python at {website}."""print(message)Code language: Python (python)

Output:

Hello John.You're learning Python at PythonTutorial.net.Code language: Python (python)

Curly braces

When evaluating an f-string, Python replaces double curly braces with a single curly brace. However, the doubled curly braces do not signify the start of an expression.

Python will not evaluate the expression inside the double curly brace and replace the double curly braces with a single one. For example:

s = f'{{1+2}}'print(s)Code language: Python (python)

Output:

{1+2}Code language: Python (python)

The following shows an f-string with triple curly braces:

s = f'{{{1+2}}}'print(s)Code language: Python (python)

Output:

{3}Code language: Python (python)

In this example, Python evaluates the {1+2} as an expression, which returns 3. Also, it replaces the remaining doubled curly braces with a single one.

To add more curly braces to the result string, you use more than triple curly braces:

s = f'{{{{1+2}}}}'print(s)Code language: Python (python)

Output:

{{1+2}}Code language: Python (python)

In this example, Python replaces each pair of doubled curly braces with a single curly brace.

The evaluation order of expressions in Python f-strings

Python evaluates the expressions in an f-string in the left-to-right order. This is obvious if the expressions have side effects like the following example:

def inc(numbers, value): numbers[0] += value return numbers[0]numbers = [0]s = f'{inc(numbers,1)},{inc(numbers,2)}'print(s)Code language: Python (python)

Output:

1,3Code language: Python (python)

In this example, the following function call increases the first number in the numbers list by one:

inc(numbers,1)Code language: Python (python)

After this call, the numbers[0] is one. And the second call increases the first number in the numbers list by 2, which results in 3.

Format numbers using f-strings

The following example use a f-string to format an integer as hexadecimal:

number = 16s = f'{number:x}'print(s) # 10Code language: PHP (php)

The following example uses the f-string to format a number as a scientific notation:

number = 0.01s = f'{number:e}'print(s) # 1.000000e-02Code language: PHP (php)

If you want to pad zeros at the beginning of the number, you use the f-string format as follows:

number = 200s = f'{number: 06}'print(s) # 00200Code language: PHP (php)

The 06 is the total number of the result numeric string including the leading zeros.

To specify the number of decimal places, you can also use the f-string:

number = 9.98567s = f'{number: .2f}'print(s) # 9.99Code language: PHP (php)

Note that the f-string also performs rounding in this case.

If the number is too large, you can use the number separator to make it easier to read:

number = 400000000000s = f'{number: ,}' # also can use _print(s) # 400,000,000,000Code language: PHP (php)

To format a number as a percentage, you use the following f-string format:

number = 0.1259s = f'{number: .2%}'print(s) # 12.59%s = f'{number: .1%}'print(s) # 12.5%Code language: PHP (php)

Python has more sophisticated format rules that you can reference via the following link.

Summary

  • Python f-strings provide an elegant way to format text strings.
  • Python replaces the result of an expression embedded inside the curly braces {} in an f-string at runtime.

Did you find this tutorial helpful ?

Python F-strings: a Practical Guide to F-strings in Python (2024)

FAQs

What are the F strings in Python? ›

Also called formatted string literals, f-strings are string literals that have an f before the opening quotation mark. They can include Python expressions enclosed in curly braces. Python will replace those expressions with their resulting values. So, this behavior turns f-strings into a string interpolation tool.

Are F strings good in Python? ›

Using f-strings, your code will not only be cleaner but also faster to write. With f-strings you are not only able to format strings but also print identifiers along with a value (a feature that was introduced in Python 3.8).

What can I use instead of F-string in Python? ›

Python has several tools for string interpolation that support many formatting features. In modern Python, you'll use f-strings or the .format() method most of the time. However, you'll see the modulo operator ( % ) being used in legacy code.

How do you add a string to an F-string in Python? ›

Concatenating Strings in Python Using f-Strings

Python f-strings are prefixed by the letter f and allow you to place variables to interpolate into square brackets. The variables are evaluated at run-time, and their string representation is placed into the string. print(f'Welcome to {website}!' )

What does F mean in a string? ›

F Strings are just a shorthand for str. format - and while they are convinient, they can't do a lot of things that str. format can. For example, with str. format , you can fetch the format string from somewhere (maybe user input / config) and then format your input using that format string.

When did Python get F strings? ›

Python f-strings or formatted strings are the new way to format strings. This feature was introduced in Python 3.6 under PEP-498.

Are Python F-strings secure? ›

For example, f-strings have similar syntax to str. format() but, because f-strings are literals and the inserted values are evaluated separately through concatenation-like behavior, they are not vulnerable to the same attack (source B).

Why are F-strings faster? ›

F-strings are faster than str. format() because f-strings are evaluated at compile-time rather than at runtime. When you use an f-string, the expression inside the curly braces is evaluated at compile-time, and the resulting value is inserted into the string.

Why not use F-string in logging Python? ›

Using f-strings to format a logging message requires that Python eagerly format the string, even if the logging statement is never executed (e.g., if the log level is above the level of the logging statement), whereas using the extra keyword argument defers formatting until required.

How do you single quote an F-string in Python? ›

We can use any quotation marks {single or double or triple} in the f-string. We have to use the escape character to print quotation marks. The f-string expression doesn't allow us to use the backslash. We have to place it outside the { }.

How can you round down a number when you use f-strings? ›

Rounding Numbers With F-Strings

F-strings can also be used to round numbers to a specific precision, using the round() function. To round a number using f-strings, simply include the number inside the curly braces, followed by a colon and the number of decimal places to round to.

Why do we use f strings in Python? ›

f-strings (formatted string literals) are a way to embed expressions inside string literals in Python, using curly braces {}. They provide an easy and readable way to format strings dynamically. sentence = f"My name is {name} and I am {age} years old."

How to print curly braces in Python f string? ›

To print a curly brace character in a string while using the . format() method in Python, you can use double curly braces {{ and }} to escape the curly braces.

What is the meaning of .2f in Python? ›

In Python, the . 2f format specifier is used to format floating-point numbers as strings with two decimal places. This format specifier is part of the Python strings format syntax in Python.

What is the curly bracket F-string in Python? ›

While writing f-string in Python, we prefix the string with an f (or F). The string can be created using single quotes, double quotes, or triple quotes. The expression to be evaluated within the f-string is placed in curly braces. The content of the curly braces can be anything, depending on the situation.

Why use f-string in Python on Reddit? ›

F strings are just a nice way to insert variables into a template string. Yes, there are other ways - but f strings are usually the best.

What are the strings in Python? ›

In Python, strings are used for representing textual data. A string is a sequence of characters enclosed in either single quotes ('') or double quotes (“”). The Python language provides various built-in methods and functionalities to work with strings efficiently.

Top Articles
Latest Posts
Recommended Articles
Article information

Author: Dan Stracke

Last Updated:

Views: 6228

Rating: 4.2 / 5 (43 voted)

Reviews: 90% of readers found this page helpful

Author information

Name: Dan Stracke

Birthday: 1992-08-25

Address: 2253 Brown Springs, East Alla, OH 38634-0309

Phone: +398735162064

Job: Investor Government Associate

Hobby: Shopping, LARPing, Scrapbooking, Surfing, Slacklining, Dance, Glassblowing

Introduction: My name is Dan Stracke, I am a homely, gleaming, glamorous, inquisitive, homely, gorgeous, light person who loves writing and wants to share my knowledge and understanding with you.