环境
TX Yun-Ubuntu 14.04.1 LTS
python-2.7.6
正文
加法运算
int + int -> int
>>>1 + 1
2
int + float -> float
>>>1 + 2.0
3.0
float + float->float
>>>1.0 + 2.0
3.0
减法运算
int - int -> int
>>>2 - 1
1
int - float ->float(反之亦然)
>>>2 - 1.0
1.0
float - float->float
>>>2.0 - 1.0
1.0
乘法运算
int * int -> int
>>>1 * 1
1
int * float -> float(反之亦然)
>>>1 * 2.0
2.0
float * float ->float
>>>1.0 * 2.0
2.0
除法运算
int / int -> int
>>>17 / 3
5
int / float -> float
>>>8 / 0.5
1.6
int // float ->float(地板除)
>>>17 // 3.0
5.0
float / float ->float
>>>2.0 / 2.0
1.0
float // float -> float(地板除)
>>>17.0 // 3.0
5.0
取余运算
int % int -> int
>>>17 % 3
2
int % float -> float(反之亦然)
>>>17 % 3.0
2.0
float % float -> float
>>>17.0 % 3.0
2.0
地板除
”//“ 除法不管操作数何种数值类型,总是舍去小数部分,返回数字序列中比真正的商小的最接近的数字。
>>> 1 // 2 #地板除, 返回整数
0
>>> 1.0 // 2.0 #地板除, 返回浮点数
0.0
>>> -1 // 2 #返回比 –0.5 小的整数, 也就是 -1
-1
长整数
Lint + int -> Lint
>>>aL=99999L
>>>a=1
>>>a+aL
100000L
幂运算
int ** int -> int
>>>5 ** 2
25
int ** float -> float(反之亦然)
>>>5 ** 2.0
25.0
复数运算
>>>a=1+2j
>>>b=1+2j
>>>a+b #复数加法
(2+4j)
>>>a-b #复数减法
0j
>>>a*b #复数乘法
(-3+4j)
>>>a=1
>>>b=1+1j
>>>a+b #整数+复数
2+1j
数值运算总结
如果有一个操作数是复数, 另一个操作数被转换为复数。
否则,如果有一个操作数是浮点数, 另一个操作数被转换为浮点数。
否则, 如果有一个操作数是长整数,则另一个操作数被转换为长整数;
否则,两者必然都是普通整数,无须类型转换。
对象
>>>a=1
>>>id(a)
38158680
>>>a+=1
>>>a
2
>>>id(a)
38158656
python的变量和我们已知的C语言,Java,php不同,这里用“对象”来描述会更好一些。我们以前对变量的定义是一个“盒子”—— 装着各种类型的数据,其“变”字可以很简单的理解为可变的。重新对变量赋值,那么盒子里面的数据就会更改,但是地址没变,只是值变了。在这里,当我们给python的对象重新赋值,实际上是重新创建了一个对象,并把新的数据放在该对象上,然后返回新对象的引用。尽管看上去和原来一样,理解这一点至关重要。
>>>a=1
>>>a
1
>>>del a
>>>a
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'a' is not defined
按照Python的法则,你无法真正删除一个数值对象,你仅仅是不再使用它而已。如果你实际上想删除一个数值对象的引用,使用del语句。删除对象的引用之后,你就不能再使用这个引用(变量名), 除非你给它赋一个新值。如果试图使用一个已经被删除的对象引用,会引发 NameError 异常。