奇怪的python';比较行为

奇怪的python';比较行为,python,compare,Python,Compare,我有一个这样的示例代码,值(position=2,object.position=3): 现在是调试: DEBUG 1. new_position: 2, old_position: 3 DEBUG 2. old position other than new position DEBUG Why am I here? 假设一个正常的比较运算符,old_位置!=新位置相当于旧位置new\u position您确定旧位置和新位置是整数吗?使用%s时,可以使任何对象打印'2'和'3'。。。即使他们

我有一个这样的示例代码,值(position=2,object.position=3):

现在是调试:

DEBUG 1. new_position: 2, old_position: 3
DEBUG 2. old position other than new position
DEBUG Why am I here?

假设一个正常的比较运算符,
old_位置!=新位置
相当于
旧位置new\u position
您确定
旧位置
新位置
是整数吗?使用
%s
时,可以使任何对象打印
'2'
'3'
。。。即使他们以完全不同的方式进行比较


请尝试使用
%r

这可能是因为您正在比较不同的不兼容类型(例如字符串和整数)。如果是,则顺序取决于类型名称的字母顺序

>>> '2' > 3
True

这适用于Python2.x。在Python3.x中,这将引发一个
类型错误

%s
说明符更改为
%r
,然后发布该说明符的输出。顺便说一句,您不应该使用名称
对象
,因为它指的是内置类型
对象
,这可能会混淆你的程序,当然,我在提交帖子后就想到了。反正是thx@mastodon-IMHO,当您试图调试东西时,最好总是打印出
repr
(也称为
%r
),而不是(或除了)转换成字符串的版本(也称为
str
或“%s”)。
>>> '2' > 3
True