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 相关文章推荐
精确查找PHP WEBSHELL木马的方法(1)
Apr 12 Python
python模拟新浪微博登陆功能(新浪微博爬虫)
Dec 24 Python
Eclipse和PyDev搭建完美Python开发环境教程(Windows篇)
Nov 16 Python
Android分包MultiDex策略详解
Oct 30 Python
python模拟事件触发机制详解
Jan 19 Python
浅谈Python用QQ邮箱发送邮件时授权码的问题
Jan 29 Python
python使用rpc框架gRPC的方法
Aug 24 Python
python爬虫获取新浪新闻教学
Dec 23 Python
十个Python练手的实战项目,学会这些Python就基本没问题了(推荐)
Apr 26 Python
selenium处理元素定位点击无效问题
Jun 12 Python
python基于opencv批量生成验证码的示例
Apr 28 Python
python四个坐标点对图片区域最小外接矩形进行裁剪
Jun 04 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判断远程url是否有效的几种方法小结
2011/10/08 PHP
php导入导出excel实例
2013/10/25 PHP
jQuery+PHP+ajax实现微博加载更多内容列表功能
2014/06/27 PHP
php分页原理 分页代码 分页类制作教程
2016/09/23 PHP
php foreach如何跳出两层循环(详解)
2016/11/05 PHP
jQuery 图像裁剪插件Jcrop的简单使用
2009/05/22 Javascript
jQuery中读取json文件示例代码
2013/05/10 Javascript
jquery操作cookie插件分享
2014/01/14 Javascript
jQuery 隐藏和显示 input 默认值示例
2014/06/03 Javascript
express的中间件bodyParser详解
2014/12/04 Javascript
javascript实现点击商品列表checkbox实时统计金额的方法
2015/05/15 Javascript
jQuery-1.9.1源码分析系列(十)事件系统之事件体系结构
2015/11/19 Javascript
jquery实现图片放大镜功能
2015/11/23 Javascript
使用jquery获取url及url参数的简单实例
2016/06/14 Javascript
深入解析桶排序算法及Node.js上JavaScript的代码实现
2016/07/06 Javascript
详解JS异步加载的三种方式
2017/03/07 Javascript
bootstrap table表格使用方法详解
2017/04/26 Javascript
利用babel将es6语法转es5的简单示例
2017/12/01 Javascript
Node 升级到最新稳定版的方法分享
2018/05/17 Javascript
JavaScript实现淘宝京东6位数字支付密码效果
2018/08/18 Javascript
Vue组件教程之Toast(Vue.extend 方式)详解
2019/01/27 Javascript
vue微信分享的实现(在当前页面分享其他页面)
2019/04/16 Javascript
JS端基于download.js实现图片、视频时直接下载而不是打开预览
2020/05/09 Javascript
python访问sqlserver示例
2014/02/10 Python
跟老齐学Python之数据类型总结
2014/09/24 Python
ITK 实现多张图像转成单个nii.gz或mha文件案例
2020/07/01 Python
Html5 webview元素定位工具的实现
2020/08/07 HTML / CSS
英国最大的化装舞会服装网站:Fancydress.com
2017/08/15 全球购物
小米乌克兰网上商店:Xiaomi.UA
2019/10/29 全球购物
实习护士自我鉴定
2013/10/13 职场文书
宠物店的创业计划书范文
2014/01/11 职场文书
先进工作者个人总结
2015/02/15 职场文书
食堂采购员岗位职责
2015/04/03 职场文书
会议通知
2015/04/15 职场文书
离婚案件答辩状
2015/05/22 职场文书
Python天气语音播报小助手
2021/09/25 Python