python - 元组内存分配和普通变量内存分配的区别

标签 python memory memory-management

>>> a = 300
>>> b = 300
>>> id(a)
34709776
>>> id(b)
34709824

在上述情况下,a 和 b 内存位置不同

>>> (a, b) = 300, 300
>>> id(a)
34709632
>>> id(b)
34709632

但是当使用元组分配时,a&b 的内存位置是相同的。为什么?

最佳答案

这是我得到的 a, b = 300, 300:

  2           0 LOAD_CONST               2 ((300, 300))
              3 UNPACK_SEQUENCE          2
              6 STORE_FAST               0 (a)
              9 STORE_FAST               1 (b)
             12 LOAD_CONST               0 (None)
             15 RETURN_VALUE

至于正常的 a = 300; b = 300 Python 使用两个单独的 LOAD_CONST,我猜这是对这种赋值的某种优化。

关于python - 元组内存分配和普通变量内存分配的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31167606/

相关文章:

python - 如果数据框中的列有多个值,则创建多行

python - 用百万条记录更新表上的记录

mysql - 多个 mysql 连接占用大量内存

javascript - 函数中的参数是否会改变 Js 中的内存使用量或速度使用量

c - 使用 c 函数分配内存是否安全

javascript/jquery 下拉菜单选择不传递 GET 请求

c++ - 在 boost::python::import 期间和之后会发生什么?

c++ - 为什么这个对象会消失并被删除?

ios - NSMutableArray replaceObjectAtIndex :withObject Loop Leakage

c++ - 我应该删除 vector <string> 吗?