在 Python 2.7.2 中将字符串与 int 进行比较看起来非常不一致:
x = '12'; y = 3
print x > y # True
x = 12; y = '3'
print x > y # False
根据
Python如何比较字符串和int?
在 Python 3 中,这些将引发异常。有没有办法让 Python 2 已经表现得那样?看着__future__
我无法弄清楚是否有这样的功能。
在 Python 2.7.2 中将字符串与 int 进行比较看起来非常不一致:
x = '12'; y = 3
print x > y # True
x = 12; y = '3'
print x > y # False
根据
Python如何比较字符串和int?
在 Python 3 中,这些将引发异常。有没有办法让 Python 2 已经表现得那样?看着__future__
我无法弄清楚是否有这样的功能。
不,您的选择是:
编写和使用会引发不需要的比较的包装类。
编写和使用自定义比较函数来代替通常的运算符。
使用 MacroPy 之类的东西可以让您的自定义比较函数使用起来不那么令人讨厌。
不要依赖这些语义。
在比较之前预先检查值。
当你需要 Python 3 时使用 Python 3。
你不能monkeypatch 内置类型(至少不去C 源代码就不能),你也不应该。您只能对它们进行子类化,并让它们TypeError
在非法比较中上升。
这是 Python 2 的正确行为(如果有问题),因此您可以做的最好的事情是切换到 Python 3,这在这方面和许多其他方面更明智。