a = 345
b = 5 > 4
python中的等号(=)是赋值运算符,等号的右侧是表达式,左侧是变量,赋值运算将右侧表达式的值赋值给左侧的变量。赋值运算符与算数运算符结合会产生新的赋值语法,除此以外,还有元组赋值,多目标赋值,不论形式如何变化,赋值运算的目的只有一个,将对象赋值给变量。
a = 0
a = a + 1
永远先计算等号右侧的表达式,以 a = a+1为例,先计算表达式a + 1的值,此时a = 0 , a + 1 = 0 + 1 = 1。 等号右侧表达式的值为1,将1赋值给变量a,最终a = 1
与其他算术运算符结合,产生新的语法,让代码看起来更加简洁,下面是加法赋值运算符的例子
a = 0
a += 1 # 等价于 a = a + 1
这种算术运算符在前,等号在后的表示方式还6种,分别是
1. -= 减法赋值运算符
2. *= 乘法赋值运算符
3. /= 除法赋值运算符
4. %= 取模赋值运算符
5. **= 幂赋值运算符
6. //= 取整除赋值运算符
同时对两个或多个变量进行赋值,可以采用元组赋值
a , b = 1, 2
a, b, c = 3, 4, 5
这种赋值方式,可以减少代码函数,让代码更加简洁
如果对两个或多个变量进行赋值时,他们的初始值都相同,那么,就没有必要使用元组赋值方式,而应该采用多目标赋值
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