Python 中赋值操作符 = 的作用

本文解释了Python中的赋值操作符=的两个核心作用:1)绑定变量与内存数据,包括直接和间接绑定,以及UnboundLocalError的处理;2)修改可变对象(如列表和字典)的元素。还讨论了赋值操作的执行顺序。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

结论

先说结论,赋值操作符 = 实际上有 2 个作用:

  1. 绑定 binding。即将变量和内存中的数据进行绑定。
  2. 修改可变对象的元素。

下面详细看看这 2 个作用。


1. 绑定 binding

绑定是指将一个变量和内存中的数据进行绑定。此时这个变量也叫做引用 reference 。
绑定时,有直接绑定和间接绑定两种方式。间接绑定也叫“取别名” aliasing,就是通过 b = a 的方式,将 b 和数据进行绑定,并且这个数据是 a 所指向的数据。示例如下图。
在这里插入图片描述
上面用到了 id() 函数,它返回的是对象的 id,相当于对象的身份证。在 CPython 中,用内存地址作为对象的 id。

1.1 UnboundLocalError

有时在函数中,会遇到 UnboundLocalError。这个报错的意思是指:一个 local 局部变量,没有和数据进行绑定,也就是还没有对变量进行赋值,所以是 unbound 状态。如下图。
在这里插入图片描述
如果是在函数外部的全局变量区,使用未绑定数据的变量,也会发生同样性质的报错,只不过此时报错的名称是 NameError,如上图。但它的本质和 UnboundLocalError 是一样的,即变量没有和数据进行绑定。

2. 修改可变对象的元素

= 的第二个作用,是修改可变对象 mutable 的元素。此时 id 不会变。(可变对象包括列表,字典等。不可变对象则是数字,字符串,元祖等)
此时 = 左边是可变对象的一个元素,右边是数据。实际是执行特殊方法 setitem 。示例如下。
在这里插入图片描述

3. 赋值操作符 = 的执行顺序

最后提一下,在执行赋值操作符 = 时,是有先后顺序的,3 个步骤如下:

  1. 先生成 = 右边的数据。
  2. 然后创建 = 左边的变量(或是找到 = 左边可变对象的元素)。
  3. 最后才是进行绑定操作(或者修改元素)。

—————————— 本文结束 ——————————

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值