运算符

 

 

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 只是传递的指针,判断是否指向同一个地址块

而 == 则是仅仅判断值相同

 

posted @ 2018-03-18 13:59  ouyang_wsgwz  阅读(191)  评论(0编辑  收藏  举报