python - Python 的解释器在分配内存时会比较值吗?
问题描述
我刚刚观看了这个关于 Python 内存管理的内容丰富的视频。在其中,演示者使用了以下代码示例(大约在 4:15 标记处):
x = 300
y = 300
在这种情况下,我们有两个名称 (x
和y
),每个都指向一个值 300。Python 是如何在执行该y = 300
行时知道它不需要分配内存而是增加引用计数的,因为用于那个的内存价值已经被分配(通过x
)?解释器是否比较每个实例的值?如果是这样,它如何跟踪它已经知道的值(我假设它会使用 a 这样做dict
)?
假设我引入了一个新变量:
z = 100 + 200
最终会z
简单地将引用计数再次增加到 300 吗?
当我在我的 REPL(Python 3.6,Windows 7 x64)中尝试以下操作时,我得到了不同的内存位置,这进一步让我感到困惑(不过,公平地说,她说不要在 REPL 中尝试这个):
>>> x = 300
>>> y = 300
>>> print(id(x))
31191600
>>> print(id(y))
31191648
解决方案
推荐阅读
- php - 参数 2 传递给 Symfony\Component\HttpFoundation\Request::setTrustedProxies
- sql-server-2005 - 使用主键标识种子和日期时间戳删除 SQL 2005 中的重复行
- ruby - 如何配置 spec_helper 文件以仅获取与 Rspec 中的 before(:context) 关联的标签?
- flutter - Flutter / Dart 中的任何插件与 Java Collator 相同?
- javascript - 当网站在线托管时,PHP 中 move_uploaded_file() 失败的原因是什么?
- graphql - 如何通过 GM_xmlhttpRequest 向 GraphQL 服务器发送 Post 请求
- r - pickerInput 无法与来自 shiny.semantic 的 grid_template 一起正常工作
- google-apps-script - 使用 Google Places API 删除 GPS 请求周围的多余字符
- unity3d - 安装统一编辑器时出错:着色器编译器初始化错误:安装时无法获取 ipc 连接,未构建
- python - 如何使用 CDK 将托管策略附加到 IAM 角色