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读取浮点数和读取文本文件示例
May 06 Python
Python中请使用isinstance()判断变量类型
Aug 25 Python
Python爬虫常用小技巧之设置代理IP
Sep 13 Python
Window 64位下python3.6.2环境搭建图文教程
Sep 19 Python
PyCharm代码提示忽略大小写设置方法
Oct 28 Python
python将list转为matrix的方法
Dec 12 Python
Python实现K折交叉验证法的方法步骤
Jul 11 Python
对Python3中列表乘以某一个数的示例详解
Jul 20 Python
详细分析Python collections工具库
Jul 16 Python
Python中的流程控制详解
Feb 18 Python
解决pytorch 的state_dict()拷贝问题
Mar 03 Python
python利用pandas分析学生期末成绩实例代码
Jul 09 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
PHP HTML代码串 截取实现代码
2009/06/29 PHP
PHP中英混合字符串截取函数代码
2011/07/17 PHP
php实现websocket实时消息推送
2018/03/30 PHP
关于php unset对json_encode的影响详解
2018/11/14 PHP
event.srcElement+表格应用
2006/08/29 Javascript
js 绑定带参数的事件以及手动触发事件
2010/04/27 Javascript
js移除事件 js绑定事件实例应用
2012/11/28 Javascript
JS创建自定义表格具体实现
2014/02/11 Javascript
jQuery实现的placeholder效果完整实例
2016/08/02 Javascript
Bootstrap基本组件学习笔记之input输入框组(9)
2016/12/07 Javascript
jQuery插件FusionCharts实现的2D饼状图效果【附demo源码下载】
2017/03/03 Javascript
vue devtools的安装与使用教程
2018/08/08 Javascript
Vue-CLI3.x 设置反向代理的方法
2018/12/06 Javascript
python类中super()和__init__()的区别
2016/10/18 Python
浅谈Python基础之I/O模型
2017/05/11 Python
python用户管理系统的实例讲解
2017/12/23 Python
Python面向对象类的继承实例详解
2018/06/27 Python
在scrapy中使用phantomJS实现异步爬取的方法
2018/12/17 Python
linux安装python修改默认python版本方法
2019/03/31 Python
Django框架使用内置方法实现登录功能详解
2019/06/12 Python
python读写csv文件方法详细总结
2019/07/05 Python
利用python绘制中国地图(含省界、河流等)
2020/09/21 Python
利用Python批量识别电子账单数据的方法
2021/02/08 Python
浅析Python模块之间的相互引用问题
2021/02/26 Python
css3 transform及原生js实现鼠标拖动3D立方体旋转
2016/06/20 HTML / CSS
公益活动策划方案
2014/01/09 职场文书
中式结婚主持词
2014/03/14 职场文书
《飞向蓝天的恐龙》教学反思
2014/04/09 职场文书
《莫泊桑拜师》教学反思
2014/04/23 职场文书
三好学生演讲稿范文
2014/04/26 职场文书
大三学生学年自我鉴定
2014/09/12 职场文书
火锅店的开业营销方案范本!
2019/07/05 职场文书
python实现局部图像放大
2021/11/17 Python
Pycharm远程调试和MySQL数据库授权问题
2022/03/18 MySQL
Redis实现短信验证码登录的示例代码
2022/06/14 Redis
css之clearfix的用法深入理解(必看篇)
2023/05/21 HTML / CSS