python 開發者注意,錯位時空下,不要用 id 判斷兩個物件是不是同一個

ponponon發表於2023-05-15

正確用法:

from loguru import logger


class Parser:
    pass

# ✅ 正確的用法
ps = [Parser() for i in range(10)]
for p in ps:
    print(id(p))

錯誤用法:

from loguru import logger


class Parser:
    pass


# ❌ 錯誤的用法
for i in range(10):
    p = Parser()
    print(id(p))

為什麼是錯誤的?因為 GC,GC 之後,這個物件的記憶體就空出來了,就會被複用

參考官方文件:library functions: id
還有這個 issue:為什麼id(GreenThread)總是相同的?

相關文章