gpt4 book ai didi

Python: 'inf is inf' ,但 '-inf is not -inf' ?

转载 作者:行者123 更新时间:2023-12-03 18:15:36 27 4
gpt4 key购买 nike

python 3.7
在编写最大值的搜索代码时,我遇到了负无穷大的奇怪行为。
有人可以解释为什么这种行为吗?

>>> inf = float('inf')
>>> inf is inf
True
>>> (-inf) is (-inf)
False
而且我已经意识到最好使用 ==为了比较,但我对上述问题的答案很感兴趣。

最佳答案

inf是一个变量,绑定(bind)到一个特定的对象。任何对象is本身,所以 inf is inf .-inf是一个表达式。它进行数学运算,并生成一个值浮点负无穷大的对象。 Python 没有 promise this 是否与具有该值的任何其他对象相同。在您的情况下,-inf 的两个评估碰巧产生了不同的物体。
再次,有没有 promise 关于什么-inf is -inf会产生。当前的 CPython 实现恰好始终产生 False。 PyPy 的原始处理 produces True .不同的 Python 版本或实现可能会根据当前的内存压力不一致地产生 True 或 False,或者您是否将其作为脚本或交互方式运行,或任何其他因素。 CPython 本身已经存在对象标识在脚本中或交互方式中不同的情况;例如,这个:

x = 1000
y = 1000
print(x is y)
根据您是否以交互方式运行它,在当前 CPython 实现中打印不同的东西。

关于Python: 'inf is inf' ,但 '-inf is not -inf' ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62921828/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com