python的“不可变性”代表了什么?
2017-04-04 本文已影响0人
唐大方
在python中,每一个对象都可以分为不可变性或者可变性。
不可变性可以用来保证在程序中保持一个对象的固定不变。
一个具有“不可变性”的对象,是一个在其创建以后不能够被改变的对象。例如,不能通过对字符串的某一位置进行赋值而改变字符串。
Python中的数字、字符串、元组是不可变的;列表和字典可以完全自由地改变。
尽管无法就地改变一个不可变的对象,但是可以通过运行一个表达式创建一个新的对象。例如,可以通过创建一个新的字符串,并以相同的变量名进行赋值:
str = 'bukebian'
str[0:2] = ''
Traceback (most recent call last):
File "file.py", line 3, in
str[0:2] = ''
TypeError: 'str' object does not support item assignment
str = 'ok'
print(str)
ok
此时,变量str指向了新的对象'ok',曾指过的对象'bukebian'没有发生任何变化,仍旧在其原来的内存空间。只有一种情况会出现,那就是被python清理掉,条件是其他变量都没有引用(指向)它。