您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

比较int和float时,Python何时执行类型转换?

比较int和float时,Python何时执行类型转换?

它不像类型转换那样简单。

10 == 10.0委托给参数的__eq__方法(10).__eq__(10.0)首先尝试,然后(10.0).__eq__(10)在第一次调用返回时尝试NotImplemented。它不尝试转换类型。(从技术上讲,方法查找使用一个特殊的例程,该例程绕过实例__dict__条目和__getattribute__/或__getattr__重写,因此,它并不等同于自己调用方法。)

int.__eq__ 不知道如何处理浮点数:

>>> (10).__eq__(10.0)
NotImplemented

float.__eq__知道如何处理整数:

>>> (10.0).__eq__(10)
True

float.__eq__也不只是在内部执行转换。它具有100余行代码来处理浮点/整数比较,而不会出现未经检查的强制转换可能导致的舍入错误。(有些那可以简化如果C级比较例程没有还必须处理>>=<,和<=)。

python 2022/1/1 18:41:38 有292人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶