Python 3.6字面量字符串内容规则咨询及教程求荐
嘿,我来帮你把Python 3.6的字面量格式化字符串(也就是大家常说的f-string)的用法讲明白,先从你给出的例子入手拆解,再给你一套通俗易懂的入门指南!
先解析你提到的例子
你看到的代码:
value = 1234 print(f'input={value:#06x}') # 输出:input=0x04d2
这里的f'...'就是f-string,里面的{value:#06x}是带格式说明符的变量插入,拆解每个部分:
value:要插入的变量,值是1234#:显示进制前缀(十六进制就是0x,八进制是0o,二进制是0b)06:指定输出的总宽度为6位,不足的地方用0补全x:把整数转换成小写十六进制(换成X就是大写十六进制)
计算一下:1234的十六进制是4d2,加上0x前缀后是0x4d2,总宽度要6位,所以在4d2前面补一个0,就变成了0x04d2,和输出结果一致。
通俗易懂的f-string入门教程
一、基础用法:直接插入变量
这是f-string最核心也最简单的用法,只要把变量放进{}里就行,不用再像str.format()那样写占位符:
username = "Bob" score = 95 print(f"玩家{username}的本次得分是{score}分") # 输出:玩家Bob的本次得分是95分
二、格式说明符:定制输出样式
这部分就是你例子里用到的进阶功能,格式是{变量名:格式符},常用的场景整理如下:
1. 数字格式化
- 进制转换:
d:十进制整数(默认,可省略),例:f"{100:d}"→"100"x/X:十六进制(小写/大写),加#显示前缀,例:f"{100:#X}"→"0X64"o:八进制,加#显示0o前缀,例:f"{100:#o}"→"0o144"b:二进制,加#显示0b前缀,例:f"{100:#b}"→"0b1100100"
- 宽度与补位:
0Nd:总宽度N位,不足补0,例:f"{123:06d}"→"000123"Nd:总宽度N位,不足补空格(右对齐),例:f"{123:6d}"→" 123"<Nd:左对齐,例:f"{123:<6d}"→"123 "
- 浮点数与百分比:
.Nf:保留N位小数,例:f"{3.14159:.2f}"→"3.14".N%:转换成百分比并保留N位小数,例:f"{0.75:.0%}"→"75%"
2. 字符串格式化
- 对齐:
<N:左对齐,总宽度N位,例:f"{'hi':<5}"→"hi ">N:右对齐,例:f"{'hi':>5}"→" hi"^N:居中对齐,例:f"{'hi':^5}"→" hi "
- 截断:
.N:只显示前N个字符,例:f"{'hello world':.5}"→"hello"
三、进阶玩法:直接用表达式和函数
f-string里不仅能放变量,还能直接写表达式甚至调用函数,不用提前把结果赋值给变量:
# 算术表达式 print(f"10的平方是{10 ** 2}") # 输出:10的平方是100 # 条件表达式 is_adult = True print(f"你是{'成年人' if is_adult else '未成年人'}") # 输出:你是成年人 # 函数调用 def capitalize_name(name): return name.title() print(f"格式化后的名字:{capitalize_name('alice')}") # 输出:格式化后的名字:Alice
四、特殊字符处理
如果要在f-string里显示{或},需要连续写两个对应的符号来转义:
print(f"f-string用{{}}包裹变量,比如{{name}}") # 输出:f-string用{}包裹变量,比如{name}
内容的提问来源于stack exchange,提问作者Yuval Meshorer
相关产品推荐
相关产品推荐

