为什么(不是如何)像 int 和 string 这样的 Python 原始数据类型是不可变的。那是因为脚本语言的实现限制。
作为例子
a = 5;
a = 6;
Run Code Online (Sandbox Code Playgroud)
在第二行(a = 6;)而不是创建一个新的内存位置,为什么不能将第一个内存位置更改为 6
一些 Python 数据类型是不可变的,因为 Python 使用引用/指针语义。
这意味着,无论何时将表达式分配给变量,实际上并不是将值复制到由该变量表示的内存位置,而只是为该值实际存在的内存位置命名。
现在,如果例如字符串是可变的,就会发生这种情况:
a = "test"
b = a
b[2] = "o"
# Now a would be "tost", oops.
Run Code Online (Sandbox Code Playgroud)
这种行为被认为是不直观的,因此字符串被设置为不可变的。
同样对于整数,如果分配新值会改变原始位置,则会发生以下情况:
a = 5
b = a
b += 5
# a is now 10 :(
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
722 次 |
| 最近记录: |