Python3多目标赋值及共享引用注意事项
2019/7/14 23:09:14
本文主要是介绍Python3多目标赋值及共享引用注意事项,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
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多目标赋值及共享引用注意事项,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对找一找教程网网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!
这篇关于Python3多目标赋值及共享引用注意事项的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-21Python编程基础教程
- 2024-11-20Python编程基础与实践
- 2024-11-20Python编程基础与高级应用
- 2024-11-19Python 基础编程教程
- 2024-11-19Python基础入门教程
- 2024-11-17在FastAPI项目中添加一个生产级别的数据库——本地环境搭建指南
- 2024-11-16`PyMuPDF4LLM`:提取PDF数据的神器
- 2024-11-16四种数据科学Web界面框架快速对比:Rio、Reflex、Streamlit和Plotly Dash
- 2024-11-14获取参数学习:Python编程入门教程
- 2024-11-14Python编程基础入门