[英]Migrating from Python 2.7 to 3.7 - difference between isinstance(obj, None) vs is None
我必须将项目从 Python 2.7 迁移到 3.7。
这行代码曾经在 2.7 中工作
if isinstance(obj, None):
由于某种原因,它不再。 如果我这样修改:
if isinstance(obj, type(None)):
不过它会起作用。
但我的问题是,这个电话有什么区别:
isinstance(obj, None)
和
obj is None
为什么最初的开发人员决定使用 isinstance over is? (在 py 2.7 中)
谢谢。
is
运算符用于检查两个对象是否相同,而isinstance
用于检查第二个参数是否出现在第一个参数的 inheritance 链中的任何位置。
obj is None
obj
实际上是None
。
isinstance(obj, type(None))
检查obj
是无类型 object。
但实际上只有一个 None 类型的 object。 None 是 None 类型的唯一 object。 因此,当您指定 None 类型时,您将其写为type(None)
。
毕竟isinstance(None, type(None))
是真的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.