2.5 赋值运算

赋值运算符使用了和等号一样的符号,但是它和等号是不一样的。初学者由于等号的思维定势,非常容易出错!
赋值运算是指把“=”右边的内容,赋给“=”左边的变量。
(1)左边必须是变量;
(2)右边必须可以计算出一个值;
(3)左边和右边可以不相等。这个不是等号,不代表左右两边相等。
看一个例子:
a=a+5
这个例子可以清楚的看到,赋值并不是等号,这个计算式是把a的值加上5,然后再赋值给a,这样操作后a原来的值被覆盖了。假如a的值是5,那么计算后a的值就是10了。
(4)赋值表达式本身也有值,它的值就是右边表达式计算的结果
由于这个特性,赋值运算符还可以连着写,如下所示:
a=b=c=d=f=6+7
这样的式子(当然abcdef都是已经定义好的变量),最先计算的是最右边的6+7,然后f=13这个赋值表达式的值是13,这个值又赋给了d,以此类推,最后a、b、c、d、e、f的值都是13。
(5)python独有的赋值,可以用一个赋值,给多个变量赋值。例如:
a,b=1,2
print(a,b)

我们来实现这样的功能:两个变量的值互换。
如果仅仅是这样做:a=b,那么b的值就赋给a了,a原来的值就被覆盖掉了,你可以想象成b的值复制到a那里去同时覆盖掉了a原来的值。这样的操作是无法互换变量的值的。
经典的两个变量交换的算法:
a=8
b=5
print("a=",a, ",b=", b)#把a的值保存到t里面 
t=a #t=8 a=8 b=5#把b的值赋给a,那么a原来的值就没有了,此时a和b的值一样 
a=b #t=8 a=5 b=5#把t的值赋给b,因为t保存了a原来的值,所以这样一来,a和b的值就和运算前置换了。
b=t #t=8 a=5 b=8
print("a=",a, ",b=", b)

如果使用同时赋值,那么互换操作可以异常简单:
a=3
b=5
print(a,b)
a,b=b,a
print(a,b)