id() 函数的用途是什么?

2024-02-07

I read Python 2 文档 http://docs.python.org/2/library/functions.html#id并注意到id()功能:

返回对象的“身份”。这是一个整数(或长整数),保证该对象在其生命周期内是唯一且恒定的。具有不重叠生命周期的两个对象可能具有相同的 id() 值。

CPython实现细节:这是内存中对象的地址。

所以,我尝试使用id()有一个列表:

>>> list = [1,2,3]
>>> id(list[0])
31186196
>>> id(list[1])
31907092 // increased by 896
>>> id(list[2])
31907080 // decreased by 12

函数返回的整数是多少?它与 C 中的内存地址同义吗?如果是这样,为什么整数不对应于数据类型的大小?

When is id()在实践中使用?


您的帖子提出了几个问题:

函数返回的数字是多少?

It is "一个整数(或长整数),保证该对象在其生命周期内是唯一且恒定的。" (Python标准库-内置函数) https://docs.python.org/2/library/functions.html#id一个独特的号码。不多不少,也不少少。将其视为 Python 对象的社会保障号或员工 ID 号。

和C语言中的内存地址一样吗?

从概念上讲,是的,因为它们在其一生中都保证在各自的宇宙中是独一无二的。在Python的一种特定实现中,它实际上是相应C对象的内存地址。

如果是,为什么数字不会立即增加数据类型的大小(我假设它是 int)?

因为列表不是数组,列表元素是引用,而不是对象。

我们什么时候真正使用id( )功能?

几乎没有。您可以通过比较两个引用的 id 来测试它们是否相同,但是is操作员 https://docs.python.org/2/reference/expressions.html#is一直是推荐的方法。id( )仅在调试情况下才真正有用。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

id() 函数的用途是什么? 的相关文章

随机推荐

  • 如何在Oracle中定义ON COMMIT触发器?

    oracle数据库中是否有任何方法可以定义触发器 当指定的表发生更改时 该触发器将在提交之前同步触发 如果抛出异常则回滚 Oracle中没有ON COMMIT触发机制 不过 还有一些解决方法 您可以使用带有 ON COMMIT REFRES
  • 您最喜欢的 Windbg 提示/技巧是什么? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 等待文件可供 Win32 读取

    我正在通过调用查看目录ReadDirectoryChangesW同步地 当新文件可用时 我尝试立即访问它CreateFile with GENERIC READ and FILE SHARE READ 但这给了我ERROR SHARING
  • 在MySQL中使用存储过程时遇到两个问题

    下面是我正在其中进行利息计算的存储过程的示例代码 该代码不可执行 因为根据在游标声明之前定义创建临时表块时发现其获取问题 但如果我最近在游标声明之后定义了相同的内容 那么它会成功执行 1 我的问题是我在光标内使用该表 所以我必须在光标后定义
  • 网页抓取,获取空列表

    我很难用我的网络抓取代码找出正确的路径 我正在尝试从中获取不同的信息http financials morningstar com company profile c action t AAPL http financials mornin
  • “ipython”选项卡自动完成功能不适用于导入的模块

    IPython 上的制表符补全似乎不起作用 例如 import numpy numpy
  • 如何使用 FTPS/TLS 1.2 版模拟 FTP 连接?

    我有一个 Python 代码 使用 HTTPS 和 TLS 版本 1 2 从 FTP 读取一些文件 这是函数 凭证是从 AWS 秘密管理器读取的 def ftp connection host username password try f
  • Identity Server 3 - Ajax 调用上的 401 而不是 302

    我有一个 Web api mvc 混合应用程序 我已将其配置为使用 cookie 身份验证 这对于应用程序的 mvc 部分效果很好 Web api 确实强制执行授权 但不是返回401 Unauthorised它返回一个302 Found并重
  • 当我使用 doReturn(..).when(....) 时,PowerMockito 正在调用该方法

    我是 PowerMockito 的新手 它显示的行为我不明白 以下代码解释了我的问题 public class ClassOfInterest private Object methodIWantToMock String x String
  • QT和MFC哪个更好学[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 将对象添加到 ArrayList 指定索引处

    我认为这是一个相当简单的问题 但我不知道如何正确地做到这一点 我有一个空的数组列表 ArrayList list new ArrayList 我有一些对象 我想在其中添加对象 并且每个对象必须位于某个位置 然而 有必要将它们按每种可能的顺序
  • Inner Join 是否存在性能问题?

    目前我在我的 sp 中使用了很多内部联接 大约 7 个 它对 sp 性能有任何影响吗 左外连接是否比内连接提供更好的性能 另一件事是 如果我连接两个表 a 和 b 其中列 id 和 id1 都不可为空 我想在这里我可以进行内部联接 因为这些
  • 在 HTML 选择标签中找到默认选择的选项?

    我在网上找到了清除表单的代码 但它没有用于选择框的内容 使用 jquery 当我重置表单时 我尝试添加代码来选择选择框中的默认选项 我认为找到默认值的唯一方法是查找 SELECTED 选项所在的位置 然后我发现 当用户选择其他内容时 jqu
  • 如何确保即使在异常终止时也会调用 UnhookWindowsHookEx?

    不幸的是 MSDN 对此还不够清楚 我正在编写一个使用全局钩子的程序 我担心如果程序异常终止 崩溃 被用户杀死等 会发生什么 当进程终止时 Windows 是否会自动取消进程安装的全局挂钩 如果没有 是否可以在另一个进程中调用UnhookW
  • 升级到 bootstrap-sass 3.2.0 时出现问题

    将 bootstrap sass gem 升级到时是否还需要引用 配置其他内容 gt 3 2 0 使用 RubyMine 6 3 作为编辑器 并在 Gemfile 中添加以下内容 ruby 2 1 2 gem rails 4 1 1 gem
  • Jinja2 按空格分割字符串

    我正在使用 Jinja2 模板引擎 pelican 我有一个字符串说 a 1 我正在寻找一种方法将该字符串分成两部分 使用空格作为分隔符 所以我正在寻找的最终结果是一个变量 它以数组的形式保存两个值 例如str 0 计算结果为 a str
  • 为分层模型创建高效的数据库查询(django)

    考虑这个 django 模型 class Source models Model Some other fields type models ForeignKey Type class Type models Model Some othe
  • WSO2 CEP - 内存不足

    我们在 CEP 上看到内存不足错误 线程转储显示大约有 32000 个线程在监视器上休眠 此外 即使 CEP JVM 选项指定在内存不足时生成 HeapDump 我们也没有看到生成任何堆转储 请指教 CEP JVM Xms256m Xmx1
  • JavaScript 获取 HTML 表的行数

    如何使用 JavaScript 获取 HTML 的行数table有id和名字吗 Given a table thead tr th Header th tr thead tbody tr td Row 1 td tr tr td Row 2
  • id() 函数的用途是什么?

    I read Python 2 文档 http docs python org 2 library functions html id并注意到id 功能 返回对象的 身份 这是一个整数 或长整数 保证该对象在其生命周期内是唯一且恒定的 具有