美文网首页python开发程序员
Python中的内置类型陷阱之“不可以实地改变不可变类型对象”

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

作者: 唐大方 | 来源:发表于2017-04-04 03:43 被阅读19次

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

相关文章

网友评论

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

    本文链接:https://www.haomeiwen.com/subject/wzkaottx.html