同为float类型却触发Type error,代码逻辑异常求助
解答:看似反常的float比较TypeError问题
哈哈,这种“逻辑上完全说不通”的bug真的太容易让人头大了!我之前排查过好几个类似的案例,大多都是看起来不起眼的低级书写错误,刚好能解释你遇到的“换个运算符就正常”的诡异现象。
结合你的情况,最可能的几个低级错误包括:
- 运算符拼写失误:比如你写
>的时候不小心用了中文全角的>,而非英文半角的>?中文符号在Python里会被当成无效的标识符组成部分,直接触发类型或语法错误,但如果<是正确的英文半角符号,代码就能正常执行。另外也有可能是误把>写成了>>(位移运算符),位移运算符对float类型不支持会报错,而<作为比较运算符则能正常工作。 - 变量或代码结构的笔误:比如在
>的前后不小心多写了某个字符,或者其中一个变量在执行>比较的代码分支里,被意外重新赋值成了非float类型(比如字符串、None),但你自己没注意到;而换成<时刚好使用的是正确的float变量。 - 特殊float子类的重载问题:虽然你说两个都是float,但有没有可能其中一个是
numpy.float64这类第三方库的float子类?某些情况下,不同库的float子类之间的>运算符重载可能存在bug,但<运算符能正常工作——不过这种情况相对少见,还是笔误的概率更高。
既然你已经找到问题了,想必也是类似的“一眼没看出来的小失误”——这种bug最让人哭笑不得,但排查出来的瞬间又特别解压😆
内容的提问来源于stack exchange,提问作者69BlazeMan420
相关产品推荐
相关产品推荐

