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

Python中0 - 5 % 2与-5 % 2的差异及符号区分方法

Python取模运算与负号的常见疑问

取模运算符的结果符号始终与第二个操作数相同(或为零)

先看两个Python代码执行结果:

>>> -5 % 2 
1
>>> 0 - 5 % 2 
-1

这不是负号表示负数和减法的含义不同导致的,核心是运算符优先级和表达式解析规则在起作用:

  • 对于-5 % 2:这里的-是一元负号,用来表示负数-5,Python会直接将其解析为(-5) % 2。按照官方文档的规则,取模结果的符号和第二个操作数(2,正数)一致,所以计算后得到1(本质是-5 = 2*(-3) + 1,余数为正)。
  • 对于0 - 5 % 2:这里的-是二元减法运算符,它的优先级低于取模运算符%,所以Python会先计算5%2得到1,再执行0-1,最终结果为-1。

区分负号的两种用法很简单:

  • 当-是一元负号时,它只作用于单个数值(或括号包裹的表达式),用来表示该值的相反数,比如-3、-(a*2),这种情况下它的优先级和%、*相同,会优先结合数值形成负数,再参与其他运算。
  • 当-是二元减法运算符时,它连接两个独立的操作数,比如x - y,此时它的优先级低于乘法、取模这类运算,必须等两侧的高优先级运算完成后才会执行减法。

如果想强制改变运算顺序,直接用括号明确即可,比如(0-5)%2的结果就和-5%2一样是1。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 22:05:21