Python format()函数
Python 内置的format()
函数是一种字符串格式化输出的方法,可以将变量插入到字符串中,并控制输出的格式。
format()函数语法
其一般语法如下:
formatted_string = format(value, format_spec)
其中:
value
是要格式化输出的值;可以是任意类型的数据,例如整数、浮点数、字符串、元组等。format_spec
是一个包含格式指令的字符串,用于指定输出的格式;例如:
类型 | 意义 |
---|---|
's' | 字符串格式。这是字符串的默认类型,可以省略。 |
'b' | 字符。在打印之前将整数转换为相应的 unicode 字符。 |
'd' | 十进制整数。输出以 10 为基数的数字。 |
'o' | 八进制格式。输出以 8 为基数的数字。 |
'x' | 十六进制格式。输出以 16 为基数的数字,使用小写字母表示 9 以上的数码。 |
'X' | 十六进制格式。输出以 16 为基数的数字,使用大写字母表示 9 以上的数码。 |
'n' | 数字。这与 'd' 相似,不同之处在于它会使用当前区域设置来插入适当的数字分 隔字符。 |
'e' | 指数表示。以使用字母’e’ 来标示指数的科学计数法打印数字。默认的精度为 6。 |
'E' | 指数表示。与 'e' 相似,不同之处在于它使用大写字母’E’ 作为分隔字符。 |
'f' | 定点表示。将数字显示为一个定点数。默认的精确度为 6。 |
'F' | 定点表示。与 'f' 相似,但会将 nan 转为 NAN 并将 inf 转为 INF。 |
format()函数示例
a = 123
b = 65
c = 88
print(format(a,'b')) #二进制格式
print(format(b,'c')) #转换成字符
print(format(c,'010d')) #带前导零的十进制整数,宽度为10,
print(format(a,'x')) #小写字母表示十六禁止格式
print(format(a,'X')) #大写字母表示十六进制格式
print(format(b,'e')) #指数表示,默认精度为6
f-string
在f-string
中,使用大括号{}
表示占位符,可以直接在其中嵌入变量,并通过冒号:
指定格式指令。例如:
name = "小明"
age = 18
formatted_str = f"我是{name},我今年{age:03d}岁了。"
print(formatted_str) # 输出 "我是小明,我今年018岁了。"
在上面的例子中,{age:03d}
指定了将age
输出为一个宽度为3
的带前导零的十进制整数。
__format__()方法
调用format(value, format_spec)
会被转换成type(value).__format__(value,format_spec)
:
class test:
def __init__(self):
self.number = 10
def __format__(self,format_spec):
if format_spec == 'x':
return str(hex(self.number))
return str(self.number)
a = test()
print(format(a,'x'))
print(type(a).__format__(a,'x'))
运行结果:
0xa 0xa
如对象未正确定义__format__()
方法,或__format__()
方法没有返回字符串类型,调用format()
函数都将触发TypeError
。