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

 更新时间:2019年05月27日 08:41:31   作者:若数  
这篇文章主要介绍了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多目标赋值及共享引用注意事项,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

相关文章

  • python rsa实现数据加密和解密、签名加密和验签功能

    python rsa实现数据加密和解密、签名加密和验签功能

    本篇文章主要说明python库rsa生成密钥对数据的加密解密,api接口的签名和验签功能,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友参考下吧
    2019-09-09
  • Python数据分析的八种处理缺失值方法详解

    Python数据分析的八种处理缺失值方法详解

    缺失值可能是数据科学中最不受欢迎的值,然而,它们总是在身边。忽略缺失值也是不合理的,因此我们需要找到有效且适当地处理它们的方法
    2021-11-11
  • Python 逐行分割大txt文件的方法

    Python 逐行分割大txt文件的方法

    本文通过代码给大家介绍了Python 逐行分割大txt文件的方法,在文中给大家提到了Python从txt文件中逐行读取数据的方法,需要的朋友参考下吧
    2017-10-10
  • 浅析pytest 钩子函数 之初始钩子和引导钩子

    浅析pytest 钩子函数 之初始钩子和引导钩子

    这篇文章主要介绍了pytest 钩子函数 之初始钩子和引导钩子,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-09-09
  • Python中getpass模块无回显输入源码解析

    Python中getpass模块无回显输入源码解析

    这篇文章主要介绍了Python中getpass模块无回显输入源码解析,具有一定借鉴价值,需要的朋友可以参考下
    2018-01-01
  • 浅谈python内置变量-reversed(seq)

    浅谈python内置变量-reversed(seq)

    下面小编就为大家带来一篇浅谈python内置变量-reversed(seq)。小编觉得挺不错的。现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-06-06
  • Django验证码的生成与使用示例

    Django验证码的生成与使用示例

    关于django的验证码的使用,在网上找到了相关的资料,现在整理一下分享给大家,下面这篇文章主要给大家介绍了关于Django验证码的生成与使用的相关资料,需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-05-05
  • Python pygame绘制文字制作滚动文字过程解析

    Python pygame绘制文字制作滚动文字过程解析

    这篇文章主要介绍了Python pygame绘制文字制作滚动文字过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-12-12
  • 仅用几行Python代码就能复制她的U盘文件?

    仅用几行Python代码就能复制她的U盘文件?

    上大学的时候有老师不给上课的PPT,就总想有个程序能偷偷复制老师的U盘一直没有去实现,最近不想看论文就想起来这个事情了,发现其实用几行python代码就能搞定.分两步,首先写出来python代码,其次把.py文件转换成exe文件,直接在windows电脑上后台运行,需要的朋友可以参考下
    2021-06-06
  • Python requests HTTP验证登录实现流程

    Python requests HTTP验证登录实现流程

    这篇文章主要介绍了Python requests HTTP验证登录实现流程,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-11-11

最新评论