Python f-string 用法详解
Python f-string 详解
f-string 是 Python 3.6 引入的一种字符串格式化方法,它使用前缀 f
或 F
,允许在字符串中直接嵌入表达式。
基本语法
f"字符串内容 {表达式}"
常用用法示例
1. 基本变量插入
name = "小明"
age = 25
print(f"我叫{name},今年{age}岁")
# 输出:我叫小明,今年25岁
2. 表达式计算
a = 10
b = 3
print(f"{a} + {b} = {a + b}")
# 输出:10 + 3 = 13print(f"圆的面积:{3.14 * 5 ** 2}")
# 输出:圆的面积:78.5
3. 调用函数和方法
name = "python"
print(f"大写:{name.upper()}")
# 输出:大写:PYTHONimport math
print(f"π的值:{math.pi}")
# 输出:π的值:3.141592653589793
4. 格式化数字
# 保留小数位数
pi = 3.1415926
print(f"π约等于:{pi:.2f}")
# 输出:π约等于:3.14# 百分比格式
score = 0.856
print(f"正确率:{score:.1%}")
# 输出:正确率:85.6%# 千分位分隔符
number = 1000000
print(f"金额:{number:,}")
# 输出:金额:1,000,000# 进制转换
num = 255
print(f"十进制:{num}, 十六进制:{num:#x}, 二进制:{num:b}")
# 输出:十进制:255, 十六进制:0xff, 二进制:11111111
5. 对齐和填充
text = "Python"
print(f"左对齐:|{text:<10}|")
print(f"右对齐:|{text:>10}|")
print(f"居中对齐:|{text:^10}|")
# 输出:
# 左对齐:|Python |
# 右对齐:| Python|
# 居中对齐:| Python |# 自定义填充字符
print(f"居中填充:|{text:*^10}|")
# 输出:居中填充:|**Python**|
6. 日期格式化
from datetime import datetime
now = datetime.now()
print(f"当前时间:{now:%Y-%m-%d %H:%M:%S}")
# 输出:当前时间:2024-01-15 14:30:25
7. 字典和对象访问
# 字典
person = {"name": "李华", "age": 20}
print(f"姓名:{person['name']},年龄:{person['age']}")
# 输出:姓名:李华,年龄:20# 对象
class Student:def __init__(self, name, score):self.name = nameself.score = scorestudent = Student("张三", 95)
print(f"学生:{student.name},分数:{student.score}")
# 输出:学生:张三,分数:95
8. 多行 f-string
name = "王五"
age = 30
hobby = "游泳"message = f"""
个人信息:
姓名:{name}
年龄:{age}
爱好:{hobby}
"""
print(message)
9. 条件表达式
score = 85
print(f"成绩:{score},等级:{'优秀' if score >= 90 else '良好' if score >= 80 else '及格'}")
# 输出:成绩:85,等级:良好
优势
- 可读性强:直接在字符串中嵌入变量,代码更清晰
- 性能好:比 % 格式化和 str.format() 更快
- 功能丰富:支持各种复杂的表达式和格式化选项
- 简洁直观:语法简单,易于理解和维护
f-string 是现代 Python 编程中最推荐的字符串格式化方式。
Python f-string 官方文档链接
以下是关于 Python f-string 的官方文档链接:
主要文档
1. 格式化字符串字面值 (Formatted string literals)
Python 3.12 文档:
https://docs.python.org/3/reference/lexical_analysis.html#formatted-string-literals
Python 3.11 文档:
https://docs.python.org/3.11/reference/lexical_analysis.html#formatted-string-literals
2. f-string 语法详细说明
Python 3.12 文档:
https://docs.python.org/3/reference/lexical_analysis.html#f-strings
3. 格式规格迷你语言 (Format Specification Mini-Language)
这是 f-string 中格式化选项的完整参考:
https://docs.python.org/3/library/string.html#format-specification-mini-language
4. PEP 498 - 字面值字符串插值
这是引入 f-string 的原始提案:
https://peps.python.org/pep-0498/
相关文档
5. 字符串通用文档
https://docs.python.org/3/library/stdtypes.html#text-sequence-type-str
6. 字符串方法
https://docs.python.org/3/library/stdtypes.html#string-methods
文档要点摘要
根据官方文档,f-string 的主要特点:
- 前缀:使用
f
或F
- 表达式:用
{}
包围,可以包含任意 Python 表达式 - 转换字段:在表达式后可以添加
!r
、!s
、!a
进行转换 - 格式说明符:使用
:
后跟格式说明 - 等号说明符:Python 3.8+ 支持
{expr=}
来同时显示表达式和值
示例代码(来自官方文档)
>>> name = "Fred"
>>> f"He said his name is {name!r}."
"He said his name is 'Fred'."
>>> f"He 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")
>>> f"result: {value:{width}.{precision}}" # nested fields
'result: 12.35'
>>> f"{name = }" # Python 3.8+
"name = 'Fred'"
建议直接阅读官方文档以获取最准确和最新的信息!