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

Python字符串格式化报错原因及运算符优先级问题咨询

问题解答

你的理解完全正确,问题核心在于Python的运算符优先级:

  • 第一种代码场景:

    a = 5
    b = 3
    print("a - b = %d" % a - b)
    

    由于%(字符串格式化运算符)的优先级高于-(减法运算符),Python会先执行"a - b = %d" % a,将%d替换为a的值5,得到字符串"a - b = 5"。之后尝试用这个字符串和整数3做减法运算,而字符串与整数不支持减法操作,因此抛出Unsupported operand type(s) for -: 'str' and 'int'错误。

  • 第二种代码场景:

    a = 5
    b = 3
    print("a - b = %d" % (a - b))
    

    括号()的优先级最高,Python会先计算括号内的a - b得到结果2,再执行字符串格式化操作,把%d替换为2,最终正常输出a - b = 2。

额外提一句:现在Python更推荐使用f-string进行字符串格式化,写法更直观,也不容易出现这类优先级问题,示例如下:

a = 5
b = 3
print(f"a - b = {a - b}")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 05:37:17