【Python学习笔记】再议不可变对象

本文通过示例对比了Python中可变对象(如列表)与不可变对象(如字符串)的区别。对于可变对象,直接修改其内容不会产生新对象;而对不可变对象的操作则会创建新对象并返回,原对象保持不变。文章还介绍了如何选择合适的对象类型作为字典的键。

 以最常见的不变对象字符串类型str和可变对象列表list为例

#!/usr/bin/env python
#-*- coding:utf-8 -*-


# 对于可变对象,对它进行操作,其内容是会变化的
a = ['c', 'b', 'a']
a.insert(2,'d')
a.sort()
print a
# 对于不可变对象,对它进行操作,其内容是不会变化的
b = "abcd"
print b
d=b.replace('c','C')
print d
print b
# b是一个变量,"abcd"是它指向对象的内容,a的replace方法其实是作用在它指向对象的内容上的
# 对于不变对象来说,调用对象自身的任意方法,也不会改变该对象自身的内容。相反,这些方法会创建新的对象并返回,这样,就保证了不可变对象本身永远是不可变的。
# 从内存角度区分:变量,对象,对象的内容

# 选择不可变对象作为key很重要,最常用的key是字符串。
# tuple是不变对象,但是tuple并不总是可以作为key
s = set ((1,2,3))
print s
# s = set ((1,[2,3]))   # 此处提示报错,因为此时tuple的内容是可变的
# print s

运行效果:161622_wfeo_2913386.png

转载于:https://my.oschina.net/MasterLi161307040026/blog/746063

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值