Python中的内置类型陷阱之“不可以实地改变不可变类型对象”

在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时,也会加一个逗号,以免误解成数学计算意义上的括号。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容