为什么(不是如何)python原始数据类型(如int和string)是不可变的。这是因为脚本语言的实现限制。
作为例子
a = 5;
a = 6;
在第二行(a = 6;)而不是创建新的内存位置,为什么它不能将第一个内存位置更改为6
答案 0 :(得分:4)
某些Python数据类型是不可变的,因为Python使用引用/指针语义。
这意味着无论何时将表达式分配给变量,您实际上并不是将值复制到由该变量表示的内存位置,而是仅仅为内存位置指定了一个名称。价值确实存在。
现在,如果例如字符串是可变的,则会发生这种情况:
a = "test"
b = a
b[2] = "o"
# Now a would be "tost", oops.
这种行为被认为是不直观的,因此字符串是不可变的。
对于整数,如果分配新值会改变原始位置,则会发生以下情况:
a = 5
b = a
b += 5
# a is now 10 :(