赋值运算符

a = 345
b = 5 > 4

上面两行代码都是赋值语句, 等号是赋值运算符,赋值运算符的右侧,是一个对象,也可以是一个表达式,等号左侧则必须是变量,赋值运算符将右侧的表达式的值赋值给左侧的变量。

1. 先计算赋值运算符右侧的表达式

a = 0
a = a + 1

永远先计算等号右侧的表达式,以 a = a+1为例,先计算表达式a + 1的值,此时a = 0 , a + 1 = 0 + 1 = 1。 等号右侧表达式的值为1,将1赋值给变量a,最终a = 1

2. 与其他算术运算符结合

与其他算术运算符结合,产生新的语法,让代码看起来更加简洁,下面是加法赋值运算符的例子

a = 0
a += 1   # 等价于 a = a + 1

这种算术运算符在前,等号在后的表示方式还6种,分别是

1. -=   减法赋值运算符
2. *=   乘法赋值运算符
3. /=   除法赋值运算符
4. %=   取模赋值运算符
5. **=  幂赋值运算符
6. //=  取整除赋值运算符

3. 元组赋值

同时对两个或多个变量进行赋值,可以采用元组赋值

a , b = 1, 2
a, b, c = 3, 4, 5

这种赋值方式,可以减少代码函数,让代码更加简洁

4. 多目标赋值

如果对两个或多个变量进行赋值时,他们的初始值都相同,那么,就没有必要使用元组赋值方式,而应该采用多目标赋值

a=b=c=1

用这种方式,a, b, c 的值都是1

但在使用这种方式时,有一个坑你需要注意

a = b = c = [1]

print(id(a))
print(id(b))
print(id(c))

程序输出结果

4414966920
4414966920
4414966920

这3个变量的内存地址是相同的,而如果你采用单个变量赋值的基本形式,则不会相同

a = [1]
b = [1]
c = [1]

print(id(a))
print(id(b))
print(id(c))

程序输出结果

4377783432
4377783688
4377784264

用这种方式,每一行赋值语句,都会在内存中创建一个列表再赋值给变量,因此他们的内存地址不同。

使用a = b = c = [1]这种多目标赋值方法,其过程是这样的,先创建列表[1],赋值给a, 然后执行b = a, c = a,因此在使用多目标赋值语法时,不要将可变对象赋值给多个变量,一面他们之间互相影响。

扫描关注, 与我技术互动

QQ交流群: 211426309

加入知识星球, 每天收获更多精彩内容

分享日常研究的python技术和遇到的问题及解决方案