【python】可变变量与不可变变量

2023-12-30 05:04:54

不可变类型(如整数和字符串)

当您创建一个不可变对象(如整数、字符串)时,Python实际上是将这个值存储在内存中的某个位置,并将变量名指向这个值。例如:

lens = 10
count = lens

在这种情况下,lens 和 count 都指向内存中的同一个值 10。但是,不可变类型的关键特点是它们的值不能被改变。当您执行 count += 1 时,Python会创建一个新的整数对象 11 并更新 count 指向这个新对象。lens 仍然指向原来的整数对象 10。这就是为什么更改 count 的值不会影响 lens。
常见的不可变类型包括:

  • 整数(Integers)
  • 浮点数(Floats)
  • 字符串(Strings)
  • 元组(Tuples)
  • 布尔值(Booleans)
  • 冻结集合(Frozen sets)
    例如,当你修改一个字符串或元组时,Python实际上会创建一个新的字符串或元组对象。

可变类型(如列表)

对于可变类型(如列表),情况有所不同。当您创建一个列表并将其赋值给另一个变量时,两个变量实际上指向的是同一个列表对象。例如:

python
Copy code
lens = counts = [1, 2]

在这个例子中,lens 和 counts 实际上是指向同一个列表对象 [1, 2] 的引用。当您修改这个列表(例如 lens[0] = 0),更改会反映在这个列表对象上,因此 counts 也会看到这个更改,因为它们指向的是同一个对象。
常见的可变类型包括:

  • 列表(Lists)
  • 字典(Dictionaries)
  • 集合(Sets)

结论

不可变对象(如整数、字符串)的变量名可以被认为是指向其值的引用。赋值操作创建了新的引用,但不可变对象本身不会被改变。
可变对象(如列表)的变量名是指向对象的引用。多个变量可以指向同一个可变对象,因此一个变量对对象的修改可以通过其他指向同一对象的变量看到

文章来源:https://blog.csdn.net/zaza0_0/article/details/135301267
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。