python中 和is的区别_关于python中的is和==的区别
在Python中,對象之間的比較。您可以使用= =或。但它們之間的區(qū)別是什么?比較兩個實例對象是否完全相同,無論他們是同一個對象,以及他們是否占據(jù)相同的內(nèi)存地址。萊布尼茲曾經(jīng)說過:\u201C世界上沒有兩片完全相同的樹葉。\u201D這正是這種比較,比較是否相同的葉子(也就是說,相比id是否相同,這個id是類似于一個人的身份證。)。= =比較兩個對象的內(nèi)容是否相同,也就是說,內(nèi)存地址可以不同,但內(nèi)容都是相同的。這里的比較是不一樣的葉子,它可能是相同的葉類型或靜脈。__eq__()方法的對象稱為默認(rèn)情況下。它可以區(qū)分和比較下面的例子:它可以發(fā)現(xiàn)b的內(nèi)存地址是相同的,它們指向同一個內(nèi)存,所以結(jié)果是和= =都是正確的。
他們引用和引用。重要的事情是說的三倍。但如果不是分配的參考,但分配的片嗎?答案是正確的。因為片是淺拷貝,拷貝列表中的元素重新創(chuàng)建。學(xué)生不明白,請閱讀上一篇文章在Python中淺拷貝和深拷貝。通常,我們關(guān)注的是價值,而不是內(nèi)存地址,所以= =比是更頻繁地出現(xiàn)在Python代碼。但是當(dāng)你使用嗎?與= =相比,已經(jīng)是一個很大的優(yōu)勢,也就是說,計算速度快,因為它不能超載,不需要做特殊的函數(shù)調(diào)用,函數(shù)調(diào)用的開銷少。它直接比較兩個整數(shù)id。和= = b相當(dāng)于a.__eq__ (b)。__eq__方法繼承對象比較兩個對象的id,結(jié)果是一樣的。但大多數(shù)Python對象將覆蓋__eq__方法的對象,定義相對比較的內(nèi)容,所以比較的對象屬性的值。
目前,最常見的使用是確定對象是否沒有。下面是推薦的寫法:一個沒有推薦的方式來看,它并非沒有:不是所有Python會緩存相對較小整數(shù)對象,并將直接從緩存中讓他們下次使用它們,這樣的結(jié)果是一樣,= =可能:看看另一段代碼:是什么原因?注意Python只緩存較小整數(shù)對象(范圍[256]),并不是所有的整數(shù)對象。應(yīng)該注意的是,這只是在命令行執(zhí)行,并執(zhí)行在Pycharm或保存為一個文件。結(jié)果是不同的。這是因為翻譯做了一些優(yōu)化。總結(jié)1。是比較兩個對象的id值是否相等以及他們是否指向同一個內(nèi)存地址;2. = =比較兩個對象的內(nèi)容是否相同,是否值相等;3.小整數(shù)對象[-5256]全局解釋器將放入緩存重復(fù)使用;4.
與沒有比較變量時,應(yīng)該使用。
總結(jié)
以上是生活随笔為你收集整理的python中 和is的区别_关于python中的is和==的区别的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: -i 可以编译添加多个_大咖说 | 基于
- 下一篇: rust货轮什么时候出现_与 Rust