如何强制python2在比较不同类型时引发异常?

2024-04-25 02:15:55 发布

您现在位置:Python中文网/ 问答频道 /正文

在Python 2.7.2中比较字符串和int看起来非常不一致:

x = '12'; y = 3
print x > y      # True
x = 12; y = '3'
print x > y      # False

How does Python compare string and int? 在python3中,这些将引发一个异常。有没有办法让Python2已经这样做了?看看^{}我不知道是否有这样的功能。你知道吗


Tags: and字符串功能falsetruestringpython3how
2条回答

不,你的选择是:

  • 编写并使用在不需要的比较中引发的包装类。

  • 编写并使用自定义比较函数来代替常用的运算符。

  • 使用类似MacroPy的工具可以让你的自定义比较函数不那么讨厌。

  • 不要依赖这些语义。

  • 比较前预先检查值。

  • 如果需要python3,请使用python3。

你不能monkeypatch内置类型(至少不去C源代码),你也不应该。您只能对它们进行子类化,并让它们在非法比较时引发TypeError。你知道吗

对于Python2来说,这是正确的(如果有问题的话)行为,因此最好的方法是切换到Python3,它在这方面和其他许多方面都更合理。你知道吗

相关问题 更多 >