python每日一帖---難懂的現象+清楚的解釋---我們都一樣

來源:互聯網
上載者:User

標籤:函數   false   為什麼   print   解釋   str   put   應該   strong   

? 在深處,我們都一樣 *
class WTF:  pass

Output:

>>> WTF() == WTF() # 兩個不同的對象不相等False>>> WTF() is WTF() # id一樣不相等False>>> hash(WTF()) == hash(WTF()) # 雜湊值也“應該”不相等True>>> id(WTF()) == id(WTF())True
解釋:
  • 當使用 id 函數時,Python 建立一個名為WTF 的對象並把它傳入id 函數. id 函數拿到它的 id (它的記憶體位置), 然後丟棄這個對象。
  • 當我們在互動器中做這些時,如果Python發現一個對象佔用了未丟棄的在用的記憶體位置,Python就會給這個對象一個新位置。
  • 不過為什麼用 is 比較結果是 False呢? 讓我們來看看。

    class WTF(object):def __init__(self): print("I") # 建立時觸發def __del__(self): print("D") #丟棄時觸發

    輸出:

    >>> WTF() is WTF()I  # 建立1I  # 建立2,比較,記憶體位置不同,返回falseD # 刪除1D # 刪除2False>>> id(WTF()) == id(WTF())I #建立1D #記住記憶體,連同記憶體一起刪掉I #建立2,它用了1的記憶體(因為1已經刪掉),比較,兩個記憶體相同。D #刪除2True

python每日一帖---難懂的現象+清楚的解釋---我們都一樣

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.