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