Python f-string如何区分整数与字符串输出不同格式结果
问题原因
默认情况下f-string会对占位符里的值调用str()做类型转换,整数1和字符串'1'转成字符串后内容都是1,所以两段代码输出完全一致,无法区分原始类型。
解决方法
在占位符中使用!r转换标记即可,写法为f"{x!r}",实际运行效果:
# 整数场景 x = 1 print(f"{x!r}") # 输出:1 # 字符串场景 x = '1' print(f"{x!r}") # 输出:'1'
实现原理
!r标记会让f-string调用值的__repr__方法生成输出:
- 整数的
__repr__返回值就是纯数字内容的字符串,没有额外包裹符号 - 字符串的
__repr__返回值会自动在外层包裹单引号,和Python代码里书写字符串字面量的格式一致,刚好满足区分类型输出的需求。
内容的提问来源于stack exchange,提问作者apostofes
相关产品推荐
相关产品推荐

