今天主要来学习下python的变量赋值方面的知识,及注意事项
变量赋值
赋值操作符
在python语言中,等号(=)是主要的赋值运算符,其他的是增量赋值运算符。
注意:赋值并不是直接将一个值赋给一个变量。在python语言中,对象是通过引用传递。在赋值时,不管这个对象是新创建的,还是已存在的变量,都是将该对象的引用(并不是值)赋值给变量。
aint = 12
astring = 'yuanph'
afloat= -3.141582653
aotherString = 'ping'+'hua'
alist =[3,1.4,'ufasd',8.3-1.9]
print(aint,astring,afloat,aotherString,alist)
以下的赋值语句是非法的
>>> x=1
>>> y= (x=x+1)
File "<stdin>", line 1
y= (x=x+1)
^
SyntaxError: invalid syntax
如果你较为熟悉C的话,赋值语句其实就是当成一个表达式(可以返回值),上述赋值在C中是合法的
int x = 1;
int y = (x=x+1);
printf("%d\t%d",x,y);
//2 2
如将上述的语句改成链接赋值,那是合法的
>>> x=1
>>> y = x =x+1
>>> x,y
(2, 2)
增量赋值
从python2.0开始,等号可以和一个算述操作符组合在一起,将计算结果重新赋值给左边的变量,这被称为增量赋值
增量赋值通过使用赋值运行算,将数学运算隐藏在赋值过程中,如果学过其他语言,对下面的增量运算符会比较熟悉:
+= |
-= |
*= |
/= |
%= |
**= |
<<= |
>>= |
&= |
^= |
|= |
增量赋值相对于普通和赋值不仅是写法改变,最有意义的变化是第一个对象仅被处理一次。可变对象会被就地修改(无需拷贝引用),不可变对象则和A=A+B的结果一样(分配一个新的对象)
不支持++
、--
这样的前/后置的自增/减运算
多重赋值
>>> x=y = z= b= 1
>>> x,y,z,b
(1, 1, 1, 1)
上述代码说明:一个值为1的整形对象被创建,该对象的同一个引用被赋值给x,y,z,b.d 在python中可以将多个对象赋给多个变量,请下看下的多元赋值
多元赋值
将多个变量同时赋值的方法===>多元赋值(非官方术语)
采用这种赋值时,等号两边的对象都是元组(一种基本数据类型)
>>> x,y,z = 1,2,'yph'
>>> x,y,z
(1, 2, 'yph')
上述代码中,将两个整型变量和一个字符串对象,分别赋值给x,y,z.通常情况下元组需要用括号括起来,增加可读性(这是可选操作),但推荐使用。
我们来看下使用多元赋值来完成两个变量值的交换,先看c的实现
int x = 10;
int y = 100;
int temp = x;
x = y;
y = temp;
一般情况下我们需要一个中间变量来完成我们的数据交换,接下来我们看下python是如何快速实现这两值的交换的
>>> x,y= 10,100
>>> x,y
(10, 100)
>>> x,y= y,x
>>> x,y
(100, 10)
非常的方便快捷,显然,python在赋值之前已经对x,y的新值做了计算。