Python3多目标赋值及共享引用注意事项


Posted in Python onMay 27, 2019

Python中多目标赋值即将等号左边所有的变量名都赋值给右边的对象,完成赋值操作,比如将三个变量同时赋值给一个字符串。

a = b = c = 'Python'
print(a)
print(b)
print(c)

示例结果:

Python
Python
Python

在多目标赋值中,其本质即类似三个变量的指针指向了同一个内存空间,即三个变量共享了内存内同一对象。

不可变对象

对于不可变对象来说,我们在使用这些变量是不存在问题的。

a = b = c = 'Python'
print(a)
print(b)
print(c)
a = 'i like Python'
b = 'Python make me happy'
print(a)
print(b)
print(c)

示例结果:

i like Python
Python make me happy
Python

可以看到这些变量并不会互相影响。

可变对象

而对可变对象来说,比如列表,字典等,多目标赋值变量的使用便会变得棘手些。

L1 = L2 = [1, 2, 3, 4, 5]
print(L1)
print(L2)
# 更改列表L2,从列表尾部删除一个元素
L2.pop()
print(L1)
print(L2)

示例结果:

[1, 2, 3, 4, 5]
[1, 2, 3, 4, 5]
[1, 2, 3, 4]
[1, 2, 3, 4]

即当我们在使用多目标赋值时,需要考虑对象本身属性是否为可变对象,否则我们应该考虑对每个变量名进行单独赋值或者利用浅拷贝、深拷贝(参考上上...上节《Python列表赋值,复制,深拷贝以及5种浅拷贝详解》)等方式完成多变量的可变对象的赋值,比如我们对多变量进行分别赋值。

L1 = [1, 2, 3, 4, 5]
L2 = [1, 2, 3, 4, 5]
print(L1)
print(L2)
print(id(L1), id(L2))
L2.pop()
print(L1)
print(L2)

示例结果:

[1, 2, 3, 4, 5]
[1, 2, 3, 4, 5]
2600790220872 2600790206216
[1, 2, 3, 4, 5]
[1, 2, 3, 4]

总结

以上所述是小编给大家介绍的Python3多目标赋值及共享引用注意事项,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Python 相关文章推荐
python创建和删除目录的方法
Apr 29 Python
举例讲解Linux系统下Python调用系统Shell的方法
Nov 07 Python
python基础教程项目二之画幅好画
Apr 02 Python
python过滤中英文标点符号的实例代码
Jul 15 Python
Python中最好用的命令行参数解析工具(argparse)
Aug 23 Python
python实现人工智能Ai抠图功能
Sep 05 Python
使用PyTorch训练一个图像分类器实例
Jan 08 Python
Django实现列表页商品数据返回教程
Apr 03 Python
Python连接HDFS实现文件上传下载及Pandas转换文本文件到CSV操作
Jun 06 Python
python 实现两个npy档案合并
Jul 01 Python
python将数据插入数据库的代码分享
Aug 16 Python
PyCharm 光标变成黑块的解决方式
Feb 06 Python
Python中字符串String的基本内置函数与过滤字符模块函数的基本用法
May 27 #Python
python占位符输入方式实例
May 27 #Python
numpy.where() 用法详解
May 27 #Python
python numpy实现文件存取的示例代码
May 26 #Python
numpy linalg模块的具体使用方法
May 26 #Python
python flask解析json数据不完整的解决方法
May 26 #Python
如何使用pyinstaller打包32位的exe程序
May 26 #Python
You might like
用mysql触发器自动更新memcache的实现代码
2009/10/11 PHP
php编写的抽奖程序中奖概率算法
2015/05/14 PHP
jQuery参数列表集合
2011/04/06 Javascript
关于JS控制代码暂停的实现方法分享
2012/10/11 Javascript
js实现单一html页面两套css切换代码
2013/04/11 Javascript
JavaScript_ECMA5数组新特性详解
2016/06/12 Javascript
从重置input file标签中看jQuery的 .val() 和 .attr(“value”) 区别
2016/06/12 Javascript
微信小程序 location API实例详解
2016/10/02 Javascript
Javascript highcharts 饼图显示数量和百分比实例代码
2016/12/06 Javascript
微信小程序实战之运维小项目
2017/01/17 Javascript
nodejs入门教程四:URL相关模块用法分析
2017/04/24 NodeJs
详解基于node的前端项目编译时内存溢出问题
2017/08/01 Javascript
Vue 中如何正确引入第三方模块的方法步骤
2019/05/05 Javascript
Vue中import from的来源及省略后缀与加载文件夹问题
2020/02/09 Javascript
nuxt静态部署打包相对路径操作
2020/11/06 Javascript
Python使用Paramiko模块编写脚本进行远程服务器操作
2016/05/05 Python
python 实现网上商城,转账,存取款等功能的信用卡系统
2016/07/15 Python
Pycharm在创建py文件时,自动添加文件头注释的实例
2018/05/07 Python
使用python对文件中的数值进行累加的实例
2018/11/28 Python
python3 http提交json参数并获取返回值的方法
2018/12/19 Python
numpy.transpose()实现数组的转置例子
2019/12/02 Python
python飞机大战pygame碰撞检测实现方法分析
2019/12/17 Python
Python中itertools的用法详解
2020/02/07 Python
HTML5 canvas画矩形时出现边框样式不一致的解决方法
2013/10/14 HTML / CSS
受外贸欢迎的美国主机:BlueHost
2017/05/16 全球购物
美国网上购买眼镜:Eyeconic
2017/07/29 全球购物
Java里面有没有全局变量?为什么?
2015/02/06 面试题
六一儿童节活动策划方案
2014/01/27 职场文书
工商企业管理专业自荐信范文
2014/04/12 职场文书
市政工程技术专业自荐书
2014/07/06 职场文书
开会迟到检讨书范文
2015/05/06 职场文书
新年晚会主持词开场白
2015/05/28 职场文书
统招统分证明
2015/06/23 职场文书
小学六年级毕业感言
2015/07/30 职场文书
煤矿安全学习心得体会
2016/01/18 职场文书
MySQL悲观锁与乐观锁的实现方案
2021/11/02 MySQL