1. Python格式化字符串基础解析
格式化字符串是Python中最基础也最常用的功能之一。记得我刚学Python时,经常被各种格式化方式搞得晕头转向。后来在实际项目中大量使用后才发现,掌握好字符串格式化能极大提升代码的可读性和开发效率。
Python中的字符串格式化主要有三种方式:
- 百分号(%)格式化:最传统的格式化方法
- str.format()方法:Python2.6引入的更灵活的格式化方式
- f-string:Python3.6引入的最新格式化语法
这三种方式各有特点,适用于不同场景。下面我会详细介绍每种方法的语法特点、使用场景和性能考量。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 百分号(%)格式化详解
2.1 基本语法和使用
百分号格式化是Python最早的字符串格式化方式,语法与C语言的printf类似:
python复制name = "张三"
age = 25
print("我叫%s,今年%d岁。" % (name, age))
常用格式符包括:
- %s:字符串
- %d:十进制整数
- %f:浮点数
- %x:十六进制整数
- %%:百分号本身
提示:当只有一个变量需要格式化时,可以省略括号直接写
"字符串 %s" % var
2.2 高级格式化控制
百分号格式化还支持更精细的控制:
python复制# 控制浮点数精度
print("PI的值约为%.2f" % 3.1415926) # 输出:PI的值约为3.14
# 控制最小宽度和对齐
print("|%10s|" % "hello") # 右对齐:| hello|
print("|%-10s|" % "hello") # 左对齐:|hello |
# 数字前补零
print("编号:%04d" % 12) # 输出:编号:0012
2.3 优缺点分析
优点:
- 语法简洁,特别适合简单格式化
- 性能较好(在Python3中仍是最快的格式化方式之一)
- 与C语言语法相似,便于从其他语言转来的开发者理解
缺点:
- 当变量较多时,代码可读性下降
- 不支持更复杂的格式化需求(如字典格式化)
- 类型安全性较差,容易因类型不匹配导致错误
3. str.format()方法详解
3.1 基本用法
str.format()是Python2.6引入的更现代的格式化方法:
python复制name = "李四"
age = 30
print("我叫{},今年{}岁。".format(name, age))
这种方式通过位置参数进行格式化,比百分号方式更灵活。
3.2 高级特性
3.2.1 命名参数
python复制print("我叫{name},今年{age}岁。".format(name="王五", age=28))
3.2.2 访问对象属性
python复制class Person:
def __init__(self, name, age):
self.name = name
self.age = age
p = Person("赵六", 35)
print("姓名:{p.name},年龄:{p.age}".format(p=p))
3.2.3 格式化控制
python复制# 数字格式化
print("{:.2f}".format(3.1415926)) # 3.14
print("{:,}".format(1000000)) # 1,000,000
# 对齐和填充
print("{:<10}".format("left")) # left
print("{:>10}".format("right")) # right
print("{:^10}".format
