【发布时间】:2020-04-14 01:21:33
【问题描述】:
我想知道 python 元组是如何变得不可变的,从某种意义上说,它们是如何在内存中实现的,以至于我们无法更改它们的值?
python 列表in general 实现为动态数组,可以通过直接访问索引并分配不同的值在特定索引处修改其值。元组是不可变的,但是什么条件使它们不可变呢?为什么我们不能改变它们的值,是不是就像内存元素被额外的条件锁定在一个列表上,使它成为一个元组?
还有
字符串是不可变的,为什么它是不可变的是有道理的,因为它的状态不能改变。字符串p 将始终表示p。但是元组是怎么回事?
上面的任何定义都非常笼统,当我说python list is implemented as a dynamic array 时,我不确定python 考虑了哪些额外的条件或情况。
请建议实现的工作原理以及我可以阅读更多相关信息的任何来源。
编辑:我已经看到了这个帖子:How is tuple implemented in CPython? 但我无法正确理解。我需要一个更简单的解释。
【问题讨论】:
-
这能回答你的问题吗? How is tuple implemented in CPython?
-
@KentShikama 不,我已经编辑了我的帖子。谢谢
-
谁能解释为什么这个问题会被否决?如果不清楚,我会修改它。
-
“直接相对于 Python 本身” - 你这是什么意思? CPython 是 Python 的参考实现。我可以创建自己的 Python 实现,使用
[insert crazy data structure here]来实现元组,但我假设你对此不感兴趣。