python-3.x - is operator python 的奇怪行为
问题描述
如果我执行以下操作
x = 0
y = 0
print(x is y)
我明白了True
以下代码
x = 0
y = 0.0
print(x is y)
输出False
这是预期的行为。
但
x = 0.0
y = 0.0
print(x is y)
返回False
。为什么会发生这种情况以及如何解决它?
我的用例是我需要将 0 和 0.0 与 python 中的其他值区分开来,例如 False、"" 等,这将在 ax==0 比较中返回 True
编辑:
评论中的链接问题没有回答我的问题。我需要知道如何解决这个问题。
解决方案
在这种情况下,您可以先检查type
,然后再检查值。
像这样的东西:
>>> a = 0
>>> b = 0
>>> c = 0.0
>>> d = 0.0
>>> type(a) is type(b) and a == b
True
>>> type(a) is type(c) and a == c
False
>>> type(c) is type(d) and c == d
True
>>>
推荐阅读
- csv - 如何在 csv 文件中将一行的两列与另一行的 6 列合并?
- r - “矢量化”具有不同参数长度的函数的最快方法
- php - 为什么 alexa amazon 不刷新 OAuth2.0 中过期的访问令牌
- machine-learning - sklearn标准化后如何取回原始值
- python - 在 Pytest 中重构测试逻辑以避免复杂的引发块
- bots - Bot检测识别字段
- r - 尝试使用 R 通过 SSL 连接到 Postgres 时由对等方重置连接
- python - Ajax 是一种安全的数据传递方式吗
- php - Symfony 5 - ManyToOne __isInitialized__: false
- vue.js - 如何断开组件 beforeDestroy 钩子中的 Vuetify v-intersect 观察者?