Python 中字符串格式化主要有两种方式:使用 %
操作符(也称为旧式或 C 风格的字符串格式化)和使用 .format()
方法(也称为新式字符串格式化)。每种方法都有其用途和优缺点,但在现代Python代码中,推荐使用 .format()
方法或更现代的 f-strings(Python 3.6+)。不过,了解 %
和 .format()
方法仍然很有用,尤其是在阅读旧代码或需要向后兼容时。
使用 %
操作符
%
操作符类似于 C 语言中的 sprintf 函数。你需要在字符串中指定一个或多个格式说明符(由 %
后跟一个或多个字符组成),然后提供一个元组(对于多个值)或单个值(对于单个 %
占位符),这些值将被插入到字符串中的相应位置。
name = "Alice"
age = 30
# 使用元组
print("Name: %s, Age: %d" % (name, age))
# 使用字典(Python 2.6+)
print("Name: %(name)s, Age: %(age)d" % {'name': name, 'age': age})
使用 .format()
方法
.format()
方法提供了一种更灵活和强大的字符串格式化方式。你可以在字符串中插入大括号 {}
作为占位符,然后通过 .format()
方法传递参数。.format()
方法可以接受位置参数、关键字参数或两者的组合。
name = "Alice"
age = 30
# 位置参数
print("Name: {}, Age: {}".format(name, age))
# 关键字参数
print("Name: {name}, Age: {age}".format(name=name, age=age))
# 混合使用
print("Name: {0}, Age: {age}".format(name, age=age))
# 访问字典中的值
person = {'name': 'Alice', 'age': 30}
print("Name: {name}, Age: {age}".format(**person))
优点和缺点
- % 操作符:
- 优点:简单直观,对于简单的格式化任务来说足够。
- 缺点:不如
.format()
方法灵活,不支持嵌套字典和列表的格式化,且不易于阅读和维护大型格式化字符串。
- .format() 方法:
- 优点:更加灵活和强大,支持嵌套字典和列表的格式化,可以轻松地重新排列格式化参数,以及使用索引和关键字参数。
- 缺点:在非常简单的格式化任务中,可能比
%
操作符略显冗长。
现代选择:f-strings
从 Python 3.6 开始,f-strings 提供了一种更简洁和易读的方式来格式化字符串。f-strings 以字母 f
或 F
开头,后跟字符串,字符串中的大括号 {}
可以包含表达式,这些表达式将在运行时被其值替换。
name = "Alice"
age = 30
print(f"Name: {name}, Age: {age}")
f-strings 是 Python 字符串格式化的推荐方式,因为它们既简洁又易于阅读,并且性能也很好。