“为什么”python数据类型是不可变的

时间:2015-04-03 11:26:09

标签: python memory

为什么(不是如何)python原始数据类型(如int和string)是不可变的。这是因为脚本语言的实现限制。

作为例子

a = 5;
a = 6; 

在第二行(a = 6;)而不是创建新的内存位置,为什么它不能将第一个内存位置更改为6

1 个答案:

答案 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 :(