当前位置: 首页 > 科技观察

aisbisTrue,a==b必须为True吗?

时间:2023-03-11 22:32:49 科技观察

我们日常使用Python的时候,你可能会有这样的理解:a==b是True,aisb不一定是True,aisb是True,那么a==b一定是True>>>a='abc!'>>>b='abc!'>>>a==bTrue>>>aisbFalse>>>c=a>>>aiscTrue>>>a==cTrue这是因为==只比较值,whileis比较值和内存地址。简单来说:你左边一个人,右边一个人,两个人长得一模一样,那么你左边的人==你右边的人;你的左边有一个人,一分钟后这个人走到你的右边,那么左边的人就是刚才右边的人,但是总是有意外,如下代码:whydoes这会发生吗?aisb为真,但a==b为假。你可以在这里停下来猜猜a和b中的值是什么。现在揭开答案,我们来看网上的两行:a和b的值为nan,意思是NotaNumber,不是数字。将nan与任意数进行比较,包括它自己,结果为False,这是IEEE-754规定的:Python在实现这个数据的时候,也按照IEEE-754的要求进行限制:相关文档地址见PythonSo,这里a==b为False,属于特例。这并不是Python的错。本文转载自微信公众号“闻所未闻的密码”,可通过以下二维码关注。转载本文请联系Code公众号。