You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python打印f-string时如何保留数字下划线分隔符的原有位置?

Python数字下划线的存储与保留问题
  • 首先明确:你在数字字面量里加的下划线不会被Python解释器存储。不管你写的是40_000还是40000,最终在内存里都是同一个整数对象,下划线只是语法层面的可读性分隔符,解释时会被直接忽略,运行时不会留下任何下划线相关的位置信息。
  • 你用到的print(f"{deposit:_}")是输出阶段的动态格式化,它会自动按千位给数字加下划线,和你写字面量时的下划线位置完全无关——哪怕你写的是4_0000,格式化后依然会输出40_000。
  • 如果想要保留你自己定义的下划线分隔位置(比如不是千位的特殊分隔方式),那确实需要自定义一个类,把原始的带下划线的字符串存起来,重写__repr__或__str__方法来还原你当初的书写格式。举个简单的例子:
class CustomNumber:
    def __init__(self, literal):
        # 把下划线去掉转成数值
        self.value = int(literal.replace('_', ''))
        # 保存原始的带下划线的字符串
        self.literal = literal
    
    def __repr__(self):
        # 输出时返回原始格式
        return self.literal
    
    # 支持转成整数使用
    def __int__(self):
        return self.value

# 用法示例
deposit = CustomNumber("40_000")
print(deposit)       # 输出 40_000
print(int(deposit))  # 输出 40000

内容的提问来源于stack exchange,提问作者Anil

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 21:18:37