首页Python【Python内置函数】f...

【Python内置函数】format()函数

Python 提供了许多内置函数,这些函数是Python语言的一部分,可以直接在Python程序中使用而无需导入任何模块。

本系列将会陆续整理分享一些的Python内置函数。

文章配套代码获取有以下两种途径:
  • 通过百度网盘获取:
链接:https://pan.baidu.com/s/11x9_wCZ3yiYOe5nVcRk2CQ?pwd=mnsj 提取码:mnsj
  • 前往GitHub获取
https://github.com/returu/Python_built-in_functions





01
简介

format()函数用于将单个值转换为一种“格式化”的字符串表示形式。
format()函数的基本语法如下:
format(value, format_spec='')
  • 参数说明:
  • value:是需要格式化的值;
  • format_spec:字符串,用于定义值应该如何被格式化。函数会根据format_spec将值转换为一种“格式化”的字符串表示形式。其行为依赖于value的类型,大多数内置类型遵Format Specification Mini-Language(标准格式语法)。如果未提供format_spec,则默认为空字符串,通常效果与调用str(value)相同。
内置类型通过Format Specification Mini-Language提供丰富的格式化选项,例如包括数字的精度、填充字符、对齐方式、基数(对于整数)等:
  • {:.2f}:表示将浮点数格式化为保留两位小数。
  • {:04d}:表示将整数格式化为至少4位数字,不足部分用0填充。
  • {:>10}:表示将值右对齐,总宽度为10个字符。
具体内容详见官网文档:
https://docs.python.org/3/library/string.html#formatspec
  • 返回值:

format() 函数返回格式化后的字符串。

  • 方法调用:

该函数际调用的是type(value).__format__(value,format_spec),即直接从类的定义中查找 __format__方法,绕过实例自身的属性字典。如果搜索到达object类并且format_spec非空,或者format_spec__format__的返回值不是字符串,则会引发 TypeError 异常。

# 未定义 __format__ 的自定义类
class MyClass: pass

obj = MyClass()
print(format(obj, ""))      # 默认调用 str(obj),合法
print(format(obj, "spec"))  # TypeError: 未实现 __format__
  • 与str.format()方法对比:

内置的format(obj, format_spec)函数和str.format()方法都用于格式化字符串,但它们在使用方式和底层实现上有一些区别。

特性
format(obj, format_spec)
str.format()
核心作用
直接对单个对象进行格式化,返回格式化后的字符串
格式化字符串,支持复杂占位符和参数替换
  灵活性
低(针对单一对象的简单格式化)
高(支持多参数、复杂格式规则组合)
语法复杂度
低(仅需对象和格式说明符
高(支持位置、关键字参数及嵌套格式化)


02
使用

下面是一些使用 format() 函数的示例:

  • 示例 1:默认格式化

format_spec是空字符串(“”)时,format()函数的行为类似于str(value)

value = 123.456
print(format(value))  # 输出: "123.456"
print(str(value))     # 输出: "123.456"


  • 示例 2:自定义格式化

Format Specification Mini-LanguagePython中用于定义字符串格式化规则的一套语法规则,允许开发者通过特定的占位符和格式说明符,精确控制变量输出的格式。

# 格式化浮点数保留两位小数
print(format(3.14159, ".2f"))  # 输出:'3.14'

# 格式化整数为十六进制
print(format(255, "x"))        # 输出:'ff'

# 保留两位小数,右对齐,总宽度为20个字符,不足部分用0填充
print(format(12345, "0>20,.2f"))  # 输出:'0000000000012,345.00'
# 格式化日期
from datetime import datetime
now = datetime.now()
print(format(now, "%Y-%m-%d %H:%M:%S"))  # 输出: "2025-01-30 00:03:56"(格式化的日期和时间)


  • 示例 3:自定义类的格式化

自定义类需显式实现__format__以支持非空格式说明符。

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"
        else:
            return f"{self.celsius}°C"

temp = Temperature(25)
print(format(temp, "f"))  # 输出:'77.0°F'
print(format(temp, ""))   # 输出:'25°C'

本篇文章来源于微信公众号: 码农设计师

RELATED ARTICLES

欢迎留下您的宝贵建议

Please enter your comment!
Please enter your name here

- Advertisment -

Most Popular

Recent Comments