首页 > 后端开发 > Python教程 > 字符串连接似乎如何改变 Python 中的不可变字符串?

字符串连接似乎如何改变 Python 中的不可变字符串?

Barbara Streisand
发布: 2024-10-29 20:22:30
原创
683 人浏览过

How Can String Concatenation Seem to Mutate Immutable Strings in Python?

Python 字符串:不可变实体和赋值混乱

Python 以其字符串的不变性而自豪,这意味着字符串值一旦创建就无法更改。然而,在尝试字符串串联时遇到的令人困惑的行为引发了关于这种不变性的问题。

谜题:通过串联改变不可变字符串?

考虑以下代码片段:

<code class="python">a = "Dog"
b = "eats"
c = "treats"

print(a, b, c)  # Dog eats treats

print(a + " " + b + " " + c)  # Dog eats treats

print(a)  # Dog

a = a + " " + b + " " + c
print(a)  # Dog eats treats  # Surprise!</code>
登录后复制

代码最初初始化三个字符串,然后用空格将它们连接起来。令我们惊讶的是,a 的值在重新分配给连接结果后发生了变化。

揭秘:变量重新分配,而不是字符串突变

理解这种行为的关键在于认识到 Python 字符串确实是不可变的,而它们的引用是可变的。当我们在最后一行重新分配 a 时,我们并没有修改现有的字符串“Dog”。相反,我们创建一个新字符串“Dog eats treats”并将其引用分配给 a。

不变的真理仍然存在

本质上,字符串变量存储字符串值的地址(或引用),而不是值本身。我们可以将变量重新分配给不同的地址,但这些地址处的字符串值保持不变。

因此,虽然看起来好像我们正在通过连接修改字符串,但我们只是创建新字符串并重新分配引用。字符串的不变性保持不变。

以上是字符串连接似乎如何改变 Python 中的不可变字符串?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板