关于Python中的不可变对象
来源:互联网 发布:网眼监控软件 编辑:程序博客网 时间:2024/05/22 00:15
我们都知道,在Python中str是不变对象,而list是可变对象。
对于可变对象,比如list,对list进行操作,list内部的内容是会变化的,比如:
>>> a = ['c', 'b', 'a']>>> a.sort()>>> a['a', 'b', 'c']
而对于不可变对象,比如str,对str进行操作呢:
>>> a = 'abc'>>> a.replace('a', 'A')'Abc'>>> a'abc'
虽然字符串有个replace()方法,也确实变出了’Abc’,但变量a最后仍是’abc’,应该怎么理解呢?
我们先把代码改成下面这样:
>>> a = 'abc'>>> b = a.replace('a', 'A')>>> b'Abc'>>> a'abc'
要始终牢记的是,a是变量,而’abc’才是字符串对象!有些时候,我们经常说,对象a的内容是’abc’,但其实是指,a本身是一个变量,它指向的对象的内容才是’abc’:
当我们调用a.replace(‘a’, ‘A’)时,实际上调用方法replace是作用在字符串对象’abc’上的,而这个方法虽然名字叫replace,但却没有改变字符串’abc’的内容。相反,replace方法创建了一个新字符串’Abc’并返回,如果我们用变量b指向该新字符串,就容易理解了,变量a仍指向原有的字符串’abc’,但变量b却指向新字符串’Abc’了:
所以,对于不变对象来说,调用对象自身的任意方法,也不会改变该对象自身的内容。相反,这些方法会创建新的对象并返回,这样,就保证了不可变对象本身永远是不可变的。
阅读全文
0 0
- 关于Python中的不可变对象
- Python中的可变对象与不可变对象
- Python中的可变对象和不可变对象
- python 可变对象与不可变对象
- python可变对象和不可变对象
- python可变对象与不可变对象
- (python)可变对象/不可变对象
- Python-可变对象和不可变对象
- python中 可变与不可变对象
- python的可变和不可变对象
- Python 中可变与不可变对象
- python学习之路——函数关于可变对象和不可变对象问题
- python中的可变与不可变类型
- python中的可变与不可变
- python中的变量可变与不可变
- 关于Java中的String为什么不可变
- Python基础:Python可变对象和不可变对象
- Python基础:Python可变对象和不可变对象
- Class.forName()和ClassLoader.loadClass()区别2
- numpy
- Mybatis批量操作
- jQuery切换标签选中样式的简洁写法【实例】
- mac 常用快捷键总结
- 关于Python中的不可变对象
- MVC之struts2
- DOM4J学习笔记 --- Node与Element区别
- Python 对象
- Codeforces 835C Codeforces Round #427 (Div. 2)
- 【HDU
- android 中assets和raw文件夹的异同:
- php程序员使用jquery的if判断易犯的一个错误总结
- HTML基础-1-网页组成-网页标准-浏览器与服务器关系-html概念-标签(单/双标签 图片标签)-路径-链接-特殊符号标记