簡體   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