在Python中,不能在原处改变不可变对象,例如:
tp = (9,10,11)
tp[1] = 55
#错误
str = 'bukebian'
str[1] = 'vv'
#错误
nu = 99
nu = 88
#虽然不会报错,但赋值只是改变了引用,让nu变量指向存有88对象的空间。如果还有其他变量指向99,则99不会被python清理掉,仍旧存储在曾经的内存位置上,也没有发生改变。
不可变类型对象有数字、字符串、元组。
如果需要的话,可以在原数字、字符串或元组的基础上,通过分片、合并等操作创建一个新的对象,再赋值给原来的变量。
tp = (9,10,11)
tp = (88,) + tp[1:]
注意,Python中括号()既可以表示元组tuple,又可以表示数学公式中的小括号。为了消除歧义,当只有1个元素的元组tuple定义时,必须加一个逗号:
tp = (88,)
当然,Python在显示只有1个元素的元组tuple时,也会加一个逗号,以免误解成数学计算意义上的括号。