python多重赋值理解
来源:互联网 发布:中文域名交易平台 编辑:程序博客网 时间:2024/05/17 02:05
>>> a='hello'>>> b='gaohang'>>> id(a)140680442415120>>> id(b)140680442415264
id() 是对象的内存地址,在python 中一切都是对象,名称只是对象的引用而已
那如果我们
>>> b,a=a,b
会发生什么样的情况呢?在 C++中,我们知道,这样是不被允许的,
但是在python 中,这样的赋值是可以被允许的,我是这么理解的。
其实相当于列表赋值
[b,a]=[a,b]
新建两个列表:
>>> list1=[a,b]>>> list2=[b,a]>>> id(list1)140680442367296>>> id(list2)140680442367440
继续看看列表里面每个元素的ID
>>> id(list1[0])140680442415120>>> id(list1[1])140680442415264>>> id(list2[0])140680442415264>>> id(list2[1])140680442415120
发现
id(list1[0])==id(list2[1])id(list1[1])==id(list2[0])
这说明列表的地址不一样,但列表里面的元素却有相同的地址,因为他们指向同一对象
然后
>>> list1[0]=list2[0]>>> list1['gaohang', 'gaohang']>>> id(list2[1])140680442415120
发现了吗?
id(list2[1])==id(a)
说明即使把list2中的b 赋给list1中 的a, list2中的a并不会变化。
原因就是每个列表有自己的命名空间,a,b 只是两个字符串对象的引用,这两个名字在各个名称空间都是独立存在,也就是说,‘gaohang’ 以及’scut’这两个字符串对象在两个列表list1和list2中都有对应的引用
0 0
- python多重赋值理解
- python的多重赋值
- 关于python的拷贝,赋值理解
- 多重赋值的使用
- python --- 处理很长的判断语句,多重赋值,联合删除
- 深入理解 python 中的赋值、引用、拷贝、作用域
- Python中对象的理解:引用和赋值
- 深入理解 python 中的赋值、引用、拷贝、作用域
- 深入理解python中的赋值、引用、拷贝和作用域
- 深入理解 python 中的赋值、引用、拷贝、作用域
- 深入理解 python 中的赋值、引用、拷贝、作用域
- python 深入理解 赋值、引用、拷贝、作用域
- python 深入理解 赋值、引用、拷贝、作用域
- python 赋值
- python赋值
- python 赋值
- python基础(5):深入理解 python 中的赋值、引用、拷贝、作用域
- python基础:深入理解 python 中的赋值、引用、拷贝、作用域
- nginx日志数据提取
- 虚幻4 主线程一直向渲染线程发送Task
- 冒泡排序
- c++第三次实验--静态成员的应用
- Smack实现XMPP即时通信--登录,注册,发送及接收消息
- python多重赋值理解
- [C\C++]读入优化【技巧】
- JobClient
- YTUOJ之判断是否是子串(串)
- 创建IOS的alert界面
- ACM内部函数--数学问题--任意进制转换
- STM32系列第21篇--DMA
- HDU 3068:最长回文【回文字符串】
- SDOI2016 Round 1解题报告