对可变类型来说,我们可以在原地对变量进行修改,也就是说它的存储空间是可读可写的,例如 list;而对于不可变类型来说,它的存储空间则是只读的,无法对其进行修改,如果需要对不可变类型进行某些操作来得到新的结果,则需要重新开辟一份存储空间来存放这个新产生的结果。

1692426aa4153269d83ae4e3bedccd76.png

对于可变类型:+=代表追加操作,即 in-place 操作,在原地把另一个对象的内容追加到对象中。

对于不可变类型:+=代表连接或求和操作,其操作的结果会产生一个新的对象。>>> l = [1, 2, 3, 4, 5]

>>> id(l)

43142024

>>> l += [0]*5

>>> l[1, 2, 3, 4, 5, 0, 0, 0, 0, 0]

>>> id(l)

43142024

当用 += 时, “l” 前后是一个。

相关推荐:《python视频教程》>>> t = (1, 2, 3, 4, 5)

>>> id(t)

45438232

>>> t += (0,)*5

>>> t(1, 2, 3, 4, 5, 0, 0, 0, 0, 0)

>>> id(t)

45674568

当我们把列表换成元组时,结果又发生了变化。>>>s = "hello"

>>> id(s)

45794056

>>>s += "world"

>>> s'helloworld'

>>> id(s)

45495920

结果如同元组,“s” 在使用 += 拼接一个字符串后,被重新赋了值,已然不是之前的变量。反映在内存中就是,“s” 被另外开辟了一个存储空间来存放值。

Logo

GitCode 天启AI是一款由 GitCode 团队打造的智能助手,基于先进的LLM(大语言模型)与多智能体 Agent 技术构建,致力于为用户提供高效、智能、多模态的创作与开发支持。它不仅支持自然语言对话,还具备处理文件、生成 PPT、撰写分析报告、开发 Web 应用等多项能力,真正做到“一句话,让 Al帮你完成复杂任务”。

更多推荐