f-string 是Python 3.6 引入的新语法,称作格式字符串字面值,标注了 f
或 F
前缀的字符串字面值。这种字符串可包含替换字段,即以 {}
标注的表达式。其他字符串字面值只是常量,格式字符串字面值则是可在运行时求值的表达式。f-string 功能强大、性能优越。
输出变量、可打印字符串、ASCII
name = "中国"
print(f"He said his name is {name}.")
print(f"He said his name is {name!s}.")
# He said his name is 中国.
print(f"He said his name is {name!r}.")
# He said his name is '中国'.
print(f"He said his name is {name!a}.")
# He said his name is '\u4e2d\u56fd'.
目前支持的转换旗标有三种: !s
会对值调用 str()
,!r
调用 repr()
而 !a
则调用 ascii()
。
输出变量名和变量值
foo = "bar"
print(f"{ foo = }")
# foo = 'bar'
大括号里的=用于输出变量名和变量值,一般用于调试。
表达式计算
# 计算圆的面积
radius = 5
print(f"半径为 {radius} 的圆面积是 {3.14 * radius ** 2:.2f}")
# 半径为 5 的圆面积是 78.50
# 条件表达式
age = 25
print(f"你{'已经' if age >= 18 else '还未'}成年")
# 你已经成年
格式化字符串
import decimal
width = 10
precision = 4
value = decimal.Decimal("12.34567")
print(f"result: {value:{width}.{precision}}")
# result: 1.346
:
用户格式化输出字符串,width
设置输出10位宽,precision
设置精度,4位数。
日期格式化
from datetime import datetime
today = datetime.now()
print(f"今天是:{today:%Y-%m-%d %H:%M:%S}")
# 今天是:2025-06-21 23:59:59
print(f"{today=:%Y-%m-%d %H:%M:%S}")
# today=2025-06-21 23:59:59
输出十六进制
number = 1024
print(f"{number:x}, {number:#0x}")
# 400, 0x400
print(f"{number:b}, {number:#0b}")
# 10000000000, 0b10000000000
print(f"{number:o}, {number:#0o}")
# 2000, 0o2000
alpha = 0x61
print(f"{alpha:c}")
# a
可用的整数表示类型:
参考链接
https://docs.python.org/zh-cn/3.13/reference/lexical_analysis.html#formatted-string-literals
https://blog.csdn.net/lilongsy/article/details/105709553
https://docs.python.org/zh-cn/3.13/library/string.html#formatspec