繁体   English   中英

从 Python 2.7 迁移到 3.7 - isinstance(obj, None) 与 is None 之间的区别

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM