当一个字符串与一个整数进行比较时,字符串和int是否与ASCII码进行内部比较,还是如何比较? 我知道字符串的比较大于整数,但内部比较是如何进行的?
>>> "a" > 1
True
在你的例子中。1 < "a"
因为 "一 "代表 int
䌹䌹 string
.
来自 文件:
不同类型的对象,除了不同的数字类型和不同的字符串类型外,其他类型的对象从来不会进行等价比较;这种对象的排序是一致的,但却是任意的(这样对一个异质数组进行排序就会得到一致的结果)。
我相信这是在python 3中改变的事情之一(你会得到一个 TypeError
这里)。)
至于在CPython中是怎么做的,除了数字之外,不同类型的对象都是按照类型名来排序的;不支持正确比较的相同类型的对象是按照地址来排序的。 请注意,这是CPython的 实施,不是语言的一部分。
你应该检查该词的来源。__gt__
方法来了解细节,但我猜测是内建字符串对象的 1
转换为字符串,使用 str
函数,然后再将两者进行比较。