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

Python中f"{a}"与f"{a=}"的输出差异原因及设计逻辑

Python中f'{err=}'与f'{err}'输出差异的原因及设计逻辑

代码示例

try:
    open('nonexistent')
except Exception as err:
    print(f'{err=}')
    print(f'{err}')

输出结果

err=FileNotFoundError(2, 'No such file or directory')
[Errno 2] No such file or directory: 'nonexistent'

差异产生的原因

  • f'{err}' 会调用异常对象的__str__()方法,这个方法的作用是生成用户友好、易读的字符串,针对异常来说就是返回贴近用户视角的错误描述,包含具体的出错细节(比如本例中的文件名)。
  • f'{err=}' 是Python 3.8新增的表达式格式化语法,它会同时输出变量名和变量的repr()结果(也就是调用对象的__repr__()方法)。__repr__()的核心目标是生成精准、适合调试的字符串,要能清晰还原对象的构造信息,所以会输出异常类的名称和构造参数,方便开发者排查问题。

背后的设计逻辑

这两种格式化方式是为了适配不同的使用场景:

  • 如果是面向普通用户展示错误,f'{err}'的输出更直观,不会暴露底层的代码细节。
  • 如果是开发者调试代码,f'{err=}'能提供更精准的调试信息,直接看到异常的类型和内部参数,快速定位错误根源。而且这种语法简化了调试时“输出变量名+变量值”的操作,不用再手动写f'err={repr(err)}',提升了调试效率。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 18:30:02