python增量运算符在单行条件语句中有奇怪的行为

python增量运算符在单行条件语句中有奇怪的行为,python,increment,Python,Increment,为什么IDacter超过maxid时不重置为0 因此,这是一个简单的解决方案,但为什么idacter在超过maxid后不重置?的运算符优先级 idcter += 1 if (idcter <= maxid) else 0 在相同情况下,将0指定给结果 顺便说一句,10000已经超过您的最大ID 9999。实现这种重置增量的一种典型方法是使用模运算符。就你而言: idcter = (idcter+1) % (maxid+1) # 9997 -> 9998 -> 9999 -&

为什么IDacter超过maxid时不重置为0


因此,这是一个简单的解决方案,但为什么idacter在超过maxid后不重置?

的运算符优先级

idcter += 1 if (idcter <= maxid) else 0
在相同情况下,将0指定给结果

顺便说一句,10000已经超过您的最大ID 9999。实现这种重置增量的一种典型方法是使用模运算符。就你而言:

idcter = (idcter+1) % (maxid+1)  # 9997 -> 9998 -> 9999 -> 0 -> 1

你对哪一行感到困惑?你只是希望+=0会做与=0相同的事情吗?如果是这样的话,那么+=将变得非常不可预测且难以使用…如果仔细想想,如果idcter感谢您的快速回答,那么idcter+=1是不可能的。额外感谢模块提示!
idcter += 1 if (idcter <= maxid) else 0
idcter += (1 if (idcter <= maxid) else 0)
idcter = idcter + 1 if (idcter <= maxid) else 0
# ==
idcter = (idcter + 1) if (idcter <= maxid) else 0
idcter = (idcter+1) % (maxid+1)  # 9997 -> 9998 -> 9999 -> 0 -> 1