Python format 函数
上次修改时间:2025 年 4 月 11 日
这篇全面的指南探讨了 Python 的 format
函数,它提供了多功能的字符串格式化功能。我们将介绍基本用法、格式规范以及文本格式化的实际示例。
基本定义
format
函数使用指定的格式代码将值格式化为字符串。它是字符串格式化方法的内置实现。
主要特点:适用于所有 Python 数据类型,支持位置参数和命名参数,并为数字、日期和自定义对象提供广泛的格式化选项。
基本字符串格式化
以下是简单的用法,展示了 format
如何使用位置和命名占位符处理不同的数据类型。
# Positional arguments print(format("Hello, {}!", "world")) # Hello, world! # Named arguments print(format("Coordinates: {lat}, {lon}", lat="37.7749", lon="-122.4194")) # Formatting numbers print(format("Value: {:.2f}", 3.14159)) # Value: 3.14 # Multiple values print(format("{} + {} = {}", 2, 3, 5)) # 2 + 3 = 5
这个例子展示了使用位置和命名参数的基本字符串格式化。格式说明符 {:.2f}
将数字四舍五入到 2 位小数。
该函数类似于字符串 format
方法,但作为独立函数调用。 当您需要动态格式化值时,它很有用。
数字格式化
format
函数提供了广泛的数字格式化选项,包括精度、对齐方式和不同的数字基数。
# Floating point precision print(format("Pi: {:.4f}", 3.1415926535)) # Pi: 3.1416 # Percentage print(format("Completion: {:.1%}", 0.756)) # Completion: 75.6% # Hexadecimal print(format("Hex: 0x{:X}", 255)) # Hex: 0xFF # Thousands separator print(format("Population: {:,}", 1000000)) # Population: 1,000,000 # Scientific notation print(format("Distance: {:.2e} km", 149600000)) # Distance: 1.50e+08 km
这些示例演示了各种数字格式化选项。冒号后的格式规范控制值的显示方式。
请注意,X
产生大写十六进制,而 x
将产生小写十六进制。 逗号根据语言环境添加千位分隔符。
对齐和填充
format
函数可以对齐文本并使用各种字符添加填充。这对于创建表格或固定宽度的输出非常有用。
# Right alignment print(format("{:>10}", "right")) # ' right' # Center alignment print(format("{:^10}", "center")) # ' center ' # Left alignment print(format("{:<10}", "left")) # 'left ' # Custom padding print(format("{:*^20}", "title")) # '*******title********' # Number alignment print(format("{:=10}", -42)) # '- 42'
这些例子展示了不同的文本对齐选项。 >
、^
和 <
符号分别控制右对齐、居中对齐和左对齐。
填充字符可以在对齐符号之前指定。 =
对齐将数字的符号放在最左侧。
日期和时间格式化
format
函数通过 datetime 对象的 __format__
方法处理它们,提供灵活的日期格式化。
from datetime import datetime now = datetime.now() # Standard date formats print(format("Today is {:%Y-%m-%d}", now)) print(format("Time: {:%H:%M:%S}", now)) # Custom formats print(format("Day of year: {:%j}", now)) print(format("Week number: {:%U}", now)) print(format("AM/PM: {:%p}", now))
这演示了使用格式代码的 datetime 格式化。冒号后面的代码与 strftime
中使用的代码相同。
format 函数委托给 datetime 的 __format__
方法,该方法解释这些格式代码以生成所需的输出。
自定义对象格式化
您可以通过实现 __format__
特殊方法,使自定义对象与 format
一起使用。 此示例创建一个 Temperature 类。
class Temperature: def __init__(self, celsius): self.celsius = celsius def __format__(self, format_spec): if format_spec == 'F': return f"{self.celsius * 9/5 + 32:.1f}°F" elif format_spec == 'K': return f"{self.celsius + 273.15:.1f}K" else: return f"{self.celsius:.1f}°C" temp = Temperature(25) print(format("Temperature: {}", temp)) # 25.0°C print(format("Temperature: {:F}", temp)) # 77.0°F print(format("Temperature: {:K}", temp)) # 298.1K
Temperature 类实现 __format__
以支持不同的温度刻度输出。 冒号后的格式说明符决定输出格式。
当您想要提供对象的多个字符串表示形式,并且可以在格式化时选择它们时,此模式很有用。
最佳实践
- 对于简单情况,使用 f-strings: 在 Python 3.6+ 中,首选 f-strings 以提高可读性
- 实现 __format__: 对于需要格式化的自定义对象
- 文档格式代码: 清楚地记录支持的格式规范
- 考虑本地化: 对数字/日期使用区域设置感知格式
- 重用格式字符串: 将复杂的格式字符串存储为常量
资料来源
作者
列出所有 Python 教程。