Python 3 整数地址[重复]

2024-03-03

x=300
y=300
print(id(x),id(y))
a=[300,300]
print(id(a[0]),id(a[1]))

在执行上面的代码时,我得到不同的地址x and y但相同的地址a[0] and a[1]。谁能告诉我为什么会发生这种情况?


看看下面的例子:

>>> a=256
>>> b=256
>>> print(id(a),id(b))
(31765012, 31765012)
>>> 
>>> c=257
>>> d=257
>>> print(id(c),id(d))
(44492764, 44471284)
>>>

这将帮助您理解整数的意外行为。每当你创建一个范围内的 int 时-5 to 256您实际上只是返回对现有对象的引用。这就是所谓的整数缓存在Python中。

在 CPython 中,处理创建新 int 对象的 C-API 函数是PyLong_FromLong(long v)。请参阅有关的文档这个链接 http://docs.python.org/3.6/c-api/long.html

编辑:现在进入列表。对于相同的列表元素(较大的整数),您将获得相同的 id,因为列表是立即创建的,或者您可以说一次性创建。

您也可以使用整数实现类似的行为,请参阅下面的并行赋值示例。

>>>
>>> a,b = 300,300
>>>
>>> print(id(a),id(b))
(36132288, 36132288)
>>>

希望这能消除您的疑虑。

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

Python 3 整数地址[重复] 的相关文章

随机推荐

  • 什么是 django.utils.function.__proxy__ 对象以及它有什么帮助?

    我偶然发现了一个django utils functional proxy 对象多次 最后一次在以下代码中 def formfield for choice field self db field request kwargs print
  • 在android模拟器上运行apk

    我想在 Android 模拟器上运行 APK 我按照以下步骤操作 将apk复制到platform tools目录 以管理员身份运行cmd exe 导航到平台工具目录 从 AVD 管理器运行模拟器 在命令行中输入 adb devices 它在
  • Magento:西班牙语中的小数价格显示点而不是逗号

    我有多语言商店 默认语言是英语 很少有产品有小数价格 当我将语言切换为西班牙语时 十进制价格中出现逗号而不是点 例如 价格 英语 1 35 当我将语言切换为西班牙语时 价格将如下所示 价格 1 35 我真的想删除这个 需要 怎么做 您可以尝
  • Laravel:“users”数据库表中的“remember_token”是什么?

    使用是否安全remember token在用户表中用于验证用户进入应用程序 这个令牌的目的是什么 目前 我在表单中使用它来检查用户是否已登录 如果令牌不存在 我将显示登录屏幕 每次用户注销时 都会重新生成此令牌 不 它不应该用于身份验证 框
  • RMI 何时建立 TCP 连接?

    我有一个测试程序T which 获取一个存根Remote来自服务器上 RMI 注册表的对象 OS 在数百个并行线程中 调用该对象上的方法O 我可以看到该服务器S有许多 RMI TCP 连接 线程 我原以为只有一个 因为只有一个存根O on
  • PHP header() 和 exit() 会在重定向之前安全地终止脚本吗?

    以下是保护仅限用户区域的安全方法吗 if isset SESSION username redirect SITE ROOT st pages login using function redirect url header Locatio
  • 在 bash 中循环文本文件的每一行

    文本如下所示 428 http www youtube com watch v aqlJl1LfDP4 NEW YORK NEW YORK FRANK SINATRA YouTube moc ebutuoy www 1 0 0 20 96
  • 获取 - LMC 指令的执行周期

    我必须为每个小人计算机指令 ADD SUB BR BRP 等 定义步骤 并且我在分支指令和 COB 或停止指令 方面遇到问题 我理解每条指令开头的获取部分 电脑 gt 三月 多重耐药 gt 红外 但我不确定在执行部分添加什么才能使指令真正正
  • 在 Jenkins 中发布 Karma 单元测试

    Jenkins http jenkins ci org 已经构建了我的 Maven Java 项目 我想要的结果karma http karma runner github io 单元测试显示在 Jenkins 中 但不幸的是我无法在 Je
  • 在未安装 Qt 的计算机上运行 Qt 应用程序。 QCamera 没有看到可用的设备

    我正在开发一个网络 GUI 应用程序 在另一台未安装 Qt 的计算机上测试应用程序 但是当我启动应用程序时 QCamera 可用设备 http qt project org doc qt 5 0 qtmultimedia qcamera h
  • GridView 中的随机图像

    我想知道 GridView 中是否有随机图像 下面的代码对我来说效果很好 但启动活动时 GridView 中的图像不是随机的 我应该修改以下代码以使其随机 Layout
  • 如何使用sorted-map-by按值对地图进行排序?

    我根本无法理解文档 我想要一个排序的地图 xxx 它根据值对地图进行排序 我怎么做 Thanks 另一种方法是在比较器函数中比较原始映射的值 def my map chad 3 bob 5 sammy 4 sort by keys asce
  • Play 应用程序中使用的 SBT 覆盖范围“排除”

    我在 Play 应用程序中使用了 sbt scoverage 我使用以下配置来排除反向和路由生成的文件 coverageExcludedPackages Reverse Routes 但是 这只能排除生成的 Reverse scala 文件
  • kubectl 推出状态后获取新 pod 名称之一 | kubectl get pods --field-selector 返回终止 pod

    问题是在部署新部署后 kubectl apply f deployment yml 假设使用一个副本进行部署 Kubernetes 将创建第二个 pod 并关闭前一个 pod 到目前为止一切正常 但是在 kubectl apply 之后 我
  • 如何飞往react-leaflet中的某个位置

    所以我对反应和传单真的很陌生 但我想做的基本上就是让用户输入一些输入 然后按回车键后 触发一个事件 然后该事件飞到从该输入生成的坐标 我正在使用地理编码 经纬度坐标已成功生成 但是我不知道如何使地图飞到那个位置 这是我到目前为止所拥有的 i
  • docker-compose:为什么代理和应用程序服务因主机名而失败?

    以下是 v2 规范中工作的 docker compose 文件 version 2 volumes webroot driver local services app Launch uwsgi application server buil
  • Dialogflow 响应时间限制可以修改吗?

    我正在使用网络钩子在对话流上制作一个机器人 我收到错误 DEADLINE EXCEEDED 我的 webhook 需要 5 秒多一点的时间才能返回响应 有没有办法让时间超过5秒 这不可能 一种可能性是 例如 如果您有一个需要一些时间的后台任
  • 点击按钮后文本会恢复

    我有一个按钮 在整个程序中他可以更改自己的名字 原名 线 然后重命名为 bar 当被命名为 bar 并且我按下它时 它会执行以下代码 代码中是变量 bt3 UIView animateWithDuration 1 delay 0 optio
  • bash 获取末尾有 exit 命令的文件

    cat gt file1 sh lt lt EOF FILE1 echo before source source file2 sh echo after source func1 EOF FILE1 cat gt file2 sh lt
  • Python 3 整数地址[重复]

    这个问题在这里已经有答案了 x 300 y 300 print id x id y a 300 300 print id a 0 id a 1 在执行上面的代码时 我得到不同的地址x and y但相同的地址a 0 and a 1 谁能告诉我