sách gpt4 ai đã đi

Python "is" trả về True nhưng "==" trả về False

In lại 作者:行者123 更新时间:2023-11-28 19:39:33 29 4
mua khóa gpt4 Nike

只要“is”返回 True,“==”不应该返回 True 吗?

In [101]: np.NAN is np.nan is np.NaN
Out[101]: True

In [102]: np.NAN == np.nan
Out[102]: False

In [103]: np.NaN == np.nan
Out[103]: False

In [104]: np.NaN == np.NAN
Out[104]: False

biên tập:

float nan 的 3 个表达式只是旧 numpy 版本的遗留物还是它们有其他用途?

1 Câu trả lời

不,不适用于 NaN .您发现了其中一个异常(exception)。根据IEEE 754 , NaN 不等于任何东西,甚至不等于它自己:

A comparison with a NaN always returns an unordered result even when comparing with itself.

不仅仅是 numpy 的行为是这样的:

>>> nan = float('nan')
>>> nan is nan
ĐÚNG VẬY
>>> nan == nan
SAI

根据 IEEE 标准实现浮点运算的任何编程语言也是如此。

多个拼写是为了匹配名称的常见大小写。它是 Not a Number 的缩写,不同的人对该缩写的首字母大写不同。

对于同一个对象总是 ĐÚNG VẬY,但是 == 甚至不能保证返回 bool 值。来自__eq__ tài liệu :

By convention, SAIĐÚNG VẬY are returned for a successful comparison. However, these methods can return any value, so if the comparison operator is used in a Boolean context (e.g., in the condition of an nếu như statement), Python will call bool() on the value to determine if the result is true or false.

关于python "is"返回 True 但 "=="返回 False,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21824846/

29 4 0
行者123
Hồ sơ cá nhân

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com