python – What is print(f…)

python – What is print(f…)

The f means Formatted string literals and its new in Python 3.6.

A formatted string literal or f-string is a string literal that is
prefixed with f or F. These strings may contain replacement
fields, which are expressions delimited by curly braces {}. While
other string literals always have a constant value, formatted strings
are really expressions evaluated at run time.

Some examples of formatted string literals:

>>> name = Fred
>>> fHe said his name is {name}.
He said his name is Fred.

>>> name = Fred
>>> fHe said his name is {name!r}.
He said his name is Fred.

>>> fHe said his name is {repr(name)}. # repr() is equivalent to !r
He said his name is Fred.

>>> width = 10
>>> precision = 4
>>> value = decimal.Decimal(12.34567)
>>> fresult: {value:{width}.{precision}} # nested fields
result: 12.35

>>> today = datetime(year=2017, month=1, day=27)
>>> f{today:%B %d, %Y} # using date format specifier
January 27, 2017

>>> number = 1024
>>> f{number:#0x} # using integer format specifier

In Python 3.6, the f-string was introduced(PEP 498). In short, it is a way to format your string that is more readable and fast.


agent_name = James Bond
kill_count = 9

# old ways
print({0} has killed {1} enemies .format(agent_name,kill_count))

# f-strings way
print(f{agent_name} has killed {kill_count} enemies)

The f or F in front of strings tell Python to look at the values inside {} and substitute them with the variables values if exists. The best thing about f-formatting is that you can do cool stuff in {}, e.g. {kill_count * 100}.

You can use it to debug using print e.g.

print(fthe {agent_name=}.)
# the agent_name=James Bond

Formatting, such as zero-padding, float and percentage rounding is made easier:

print(f{agent_name} shoot with {9/11 : .2f} or {9/11: .1%} accuracy)
# James Bond shoot with  0.82 or  81.8% accuracy 

There is much more. Readings:

python – What is print(f…)

the f string is also known as the literal string to insert a variable into the string and make it part so instead of doing

x = 12
y = 10

word_string = x +  plus  + y + equals:  + (x+y)

instead, you can do

x = 12
y = 10

word_string = f{x} plus {y} equals: {x+y}
output: 12 plus 10 equals: 22

this will also help with spacing due to it will do exactly as the string is written

Leave a Reply

Your email address will not be published. Required fields are marked *