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]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在 Python 中,多变量赋值指的是同时给多个变量赋值。可以使用如下语法: ``` 变量1, 变量2, …, 变量N = 值1, 值2, …, 值N ``` 例如: ``` x, y, z = 1, 2, 3 print(x) # 输出 1 print(y) # 输出 2 print(z) # 输出 3 ``` 如果赋值的变量数量和值的数量不同,会报错。 ``` x, y = 1, 2, 3 # 报错,因为赋值的变量数量和值的数量不匹配 ``` 此外,还可以使用序列解包的语法来实现多变量赋值。 ``` values = [1, 2, 3] x, y, z = values print(x) # 输出 1 print(y) # 输出 2 print(z) # 输出 3 ``` 这样做的好处是可以在运行时动态生成值列表,而不是在代码中固定写死。 ### 回答2: Python的多变量赋值是指可以同时给多个变量赋值的一种方式。这种方式使得我们可以在一行代码中为多个变量赋予不同的值,提高了代码的简洁性和可读性。 在Python中,可以使用以下方式进行多变量赋值: 1. 直接给多个变量赋值: ```python a, b, c = 1, 2, 3 ``` 此时,变量a的值为1,变量b的值为2,变量c的值为3。 2. 通过元组进行多变量赋值: ```python a, b, c = (1, 2, 3) ``` 注意,元组中的元素数量要与变量的数量相对应。 3. 通过列表进行多变量赋值: ```python [a, b, c] = [1, 2, 3] ``` 同样地,列表中的元素数量要与变量的数量相对应。 4. 使用通配符进行多变量赋值: ```python a, *b, c = 1, 2, 3, 4, 5 ``` 在这个例子中,变量a的值为1,变量b为一个包含2、3、4的列表,变量c的值为5。通配符`*`用于匹配多个值。 多变量赋值Python中非常灵活,可以用于交换变量的值、处理返回值等等场景。同时,通过一次性为多个变量赋值,可以提高代码的简洁性和可读性,减少了冗余代码。 ### 回答3: Python 支持多变量赋值。多变量赋值的语法非常简洁,可以一次性给多个变量赋值。 例如,我们可以使用以下形式进行多变量赋值: a, b, c = 1, 2, 3 上面的代码中,我们给变量 a、b 和 c 分别赋值为 1、2 和 3。 当我们给多个变量赋值时,等号右边的值可以是一个序列,例如元组或列表。在这种情况下,Python 会自动将序列的元素按顺序赋值给变量。 示例: x, y, z = (4, 5, 6) 上面的代码中,我们通过一个元组给变量 x、y 和 z 赋值。 此外,我们还可以使用多变量赋值来交换两个变量的值,而无需使用额外的中间变量。 示例: a = 10 b = 20 a, b = b, a 上述代码中,我们实现了变量 a 和 b 的值交换。 总之,Python 的多变量赋值是一种方便且灵活的语法,可以同时给多个变量赋值,可以使用元组、列表等序列来赋值,并且还可以用于交换变量的值。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值