运算符
python 除了有一些跟c\c++共有的运算符外,还有一些特有的运算符
>>> 2**10
1024
a**b 返回a^b,也就是a 的b次方
>>> 5//2
2
>>> 5.0//2.0
2.0
a//b 返回a/b的整数部分
因为增加了这两个运算符,所以也多了两个赋值运算符 :
c **= a 等效于 c = c ** a
c //= a 等效于 c = c // a
另外在 python 中的比较运算符
python中的位运算符
另外python 中还有几种不同的逻辑运算符
x and y 布尔"与" - 如果 x 为 False,x and y 返回 False,否则它返回 y 的计算值。
x or y 布尔"或" - 如果 x 是非 0,它返回 x 的值,否则它返回 y 的计算值。
not x 布尔"非" - 如果 x 为 True,返回 False 。如果 x 为 False,它返回 True。
python中的成员运算符
in 如果在指定的序列中找到值返回True, 否则返回 False
not in 如果在指定的序列中没有找到返回值返回True,否则返回 False
python 中的身份运算符
is 判断两个标识符是不是引用自一个对象,
比如x is y, 类似 id(x) == id(y) , 如果引用的是同一个对象则返回 True,否则返回 False
is not 判断两个标识符是不是引用自不同对象
比如x is not y , 类似 id(a) != id(b)。如果引用的不是同一个对象则返回结果 True,否则返回 False。
注:id()函数用于获取对象内存地址
关于python 中的身份运算符
python中会为每个出现的对象分配内存,哪怕他们的值完全相等(注意是相等不是相同)。如执行a=2.0,b=2.0这两个语句时会先后为2.0这个Float类型对象分配内存,然后将a与b分别指向这两个对象。所以a与b指向的不是同一对象:
1 >>> a=2.0 2 >>> b=2.0 3 >>> a is b 4 False 5 >>> a==b 6 True 7 >>> e
但是为了提高内存利用效率对于一些简单的对象,如一些数值较小的int对象,python采取重用对象内存的办法,如指向a=2,b=2时,由于2作为简单的int类型且数值小,python不会两次为其分配内存,而是只分配一次,然后将a与b同时指向已分配的对象:
1 >>> a=2 2 >>> b=2 3 >>> a is b 4 True 5 >>> a==b 6 True
如但果赋值的不是2而是大的数值,情况就跟前面的一样了:
1 >>> a=4444 2 >>> b=4444 3 >>> a is b 4 False 5 >>> a==b 6 True
关于is 和 ==
is 只是传递的指针,判断是否指向同一个地址块
而 == 则是仅仅判断值相同