第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

python中id和相等的區(qū)別

python中id和相等的區(qū)別

繁星點點滴滴 2022-06-22 17:32:16
對象的 是如何id計算的?https://docs.python.org/3/library/functions.html#id似乎在一個類中有一個地方可以進行相等,__eq__但是is操作在哪里完成,以及如何id到達?
查看完整描述

3 回答

?
慕標5832272

TA貢獻1966條經(jīng)驗 獲得超4個贊

您可以將其id(obj)視為對象的某種地址。它的計算方式以及值表示的內(nèi)容取決于實現(xiàn),您不應該對值做出任何假設。

你需要知道的:

  1. id只要對象存在,對象就不會改變

  2. 兩個共存的對象會有不同id的 s

  3. 一個對象可能與id另一個已經(jīng)被釋放的對象相同(因為它已經(jīng)消失了,它的地址可以被重用)。

  4. a is b相當于id(a) == id(b)。

您不能覆蓋id計算方式,也不能覆蓋is行為方式,就像您覆蓋諸如__eq__.


查看完整回答
反對 回復 2022-06-22
?
九州編程

TA貢獻1785條經(jīng)驗 獲得超4個贊

對象的 是如何id計算的?https://docs.python.org/3/library/functions.html#id

你不知道。這是文檔必須說的:

id對象

返回對象的“身份”。這是一個整數(shù),保證該對象在其生命周期內(nèi)是唯一且恒定的。具有不重疊生命周期的兩個對象可能具有相同的id()值。

這就是 Python 做出的所有保證id()

  • 它返回一個int

  • 沒有兩個對象可以同時具有相同id()

  • 任何對象都不能有兩個不同id()的 s

這就是Python 所做的所有保證。特別是,該文檔明確指出了它不會做出的一項保證:

  • id()s 在空間和時間上不是全局唯一的,即兩個不同的對象id()在不同的時間可能有相同的

您還會注意到,文檔不保證如何id()計算 。

但是,它確實這樣說:

CPython 實現(xiàn)細節(jié):這是內(nèi)存中對象的地址。

這實際上再次強化id()了這樣一個事實,即通過明確聲明這并不能保證如何計算 s

  • 適用于 CPython,不適用于任何其他實現(xiàn),例如 PyPy、Jython、IronPython、GraalPython 或 PythonOMR

  • 是一個實現(xiàn)細節(jié),這意味著它可以在任何時候,出于任何原因,在沒有警告的情況下進行更改

事實上,除了 CPython 之外的任何實現(xiàn)實際上都不可能id()以這種方式實現(xiàn),因為所有其他實現(xiàn)要么有移動垃圾收集器(PyPy、PythonOMR),要么根本沒有“內(nèi)存地址”的概念(Jython ,IronPython,GraalPython)。

似乎在一個類中有一個地方可以進行相等,__eq__但是is操作在哪里完成,以及如何id到達?

讓我將其分解為兩個答案:

操作在哪里is完成

它被定義為 Python 語言規(guī)范的一部分,就像def. 它不會轉(zhuǎn)化為方法調(diào)用,也無法修改其行為。

是怎么id到達的

你不知道,不能知道,也不應該知道。你只知道它是一個標識符,實際值是不透明的。


查看完整回答
反對 回復 2022-06-22
?
慕田峪4524236

TA貢獻1875條經(jīng)驗 獲得超5個贊

從您提供的 URL 頁面中:“CPython 實現(xiàn)細節(jié):這是內(nèi)存中對象的地址?!?nbsp;——所以id基本上是一個地址,不多不少。



查看完整回答
反對 回復 2022-06-22
  • 3 回答
  • 0 關注
  • 272 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號