我有一个示例代码,值(position = 2,object.position = 3):
new_position = position
old_position = object.position
logging.debug("1. new_position: %s, old_position: %s" % (new_position, old_position))
if old_position != new_position:
logging.debug("old position other than new position")
if new_position > old_position:
logging.debug("Why am I here ?")
现在调试:
DEBUG 1. new_position: 2, old_position: 3
DEBUG 2. old position other than new position
DEBUG Why am I here?
答案 0 :(得分:4)
这可能是因为您正在比较不同的不兼容类型(例如字符串和整数)。如果是这样,那么顺序取决于类型名称的字母顺序。
>>> '2' > 3
True
这适用于Python 2.x.在Python 3.x中,这将提升TypeError
。
答案 1 :(得分:2)
您确定old_position
和new_position
是否为整数?使用'2'
时,任何对象都可以打印'3'
和%s
......即使它们以完全不同的方式实现比较。
请尝试%r
。
答案 2 :(得分:-2)
假设一个理智的比较运算符,old_position != new_position
等同于old_position < new_position or old_position > new_position