添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
~ 按位取反运算符:对数据的每个二进制位取反,即把1变为0,把0变为1 。 ~x 类似于 -x-1 (~a ) 输出结果 -61 ,二进制解释: 1100 0011,在一个有符号二进制数的补码形式。 <<左移动运算符:运算数的各二进位全部左移若干位,由 << 右边的数字指定了移动的位数,高位丢弃,低位补0。 a << 2 输出结果 240 ,二进制解释: 1111 0000 >>右移动运算符:把">>"左边的运算数的各二进位全部右移若干位, >> 右边的数字指定了移动的位数 a >> 2 输出结果 15 ,二进制解释: 0000 1111

以下实例演示了Python所有位运算符的操作:

实例(Python 2.0+)

#!/usr/bin/python # -*- coding: UTF-8 -*- a = 60 # 60 = 0011 1100 b = 13 # 13 = 0000 1101 c = 0 c = a & b ; # 12 = 0000 1100 print " 1 - c 的值为: " , c c = a | b ; # 61 = 0011 1101 print " 2 - c 的值为: " , c c = a ^ b ; # 49 = 0011 0001 print " 3 - c 的值为: " , c c = ~ a ; # -61 = 1100 0011 print " 4 - c 的值为: " , c c = a << 2 ; # 240 = 1111 0000 print " 5 - c 的值为: " , c c = a >> 2 ; # 15 = 0000 1111 print " 6 - c 的值为: " , c

以上实例输出结果:

1 - c 的值为: 12 2 - c 的值为: 61 3 - c 的值为: 49 4 - c 的值为: -61 5 - c 的值为: 240 6 - c 的值为: 15

Python逻辑运算符

Python语言支持逻辑运算符,以下假设变量 a 为 10, b为 20:

运算符逻辑表达式描述实例 andx and y 布尔"与" - 如果 x 为 False,x and y 返回 False,否则它返回 y 的计算值。 (a and b) 返回 20。 orx or y布尔"或" - 如果 x 是非 0,它返回 x 的计算值,否则它返回 y 的计算值。 (a or b) 返回 10。 notnot x布尔"非" - 如果 x 为 True,返回 False 。如果 x 为 False,它返回 True。 not(a and b) 返回 False

以上实例输出结果:

实例(Python 2.0+)

#!/usr/bin/python # -*- coding: UTF-8 -*- a = 10 b = 20 if a and b : print " 1 - 变量 a 和 b 都为 True " else : print " 1 - 变量 a 和 b 有一个不为 True " if a or b : print " 2 - 变量 a 和 b 都为 True,或其中一个变量为 True " else : print " 2 - 变量 a 和 b 都不为 True " # 修改变量 a 的值 a = 0 if a and b : print " 3 - 变量 a 和 b 都为 True " else : print " 3 - 变量 a 和 b 有一个不为 True " if a or b : print " 4 - 变量 a 和 b 都为 True,或其中一个变量为 True " else : print " 4 - 变量 a 和 b 都不为 True " if not ( a and b ) : print " 5 - 变量 a 和 b 都为 False,或其中一个变量为 False " else : print " 5 - 变量 a 和 b 都为 True "

以上实例输出结果:

1 - 变量 a 和 b 都为 True 2 - 变量 a 和 b 都为 True,或其中一个变量为 True 3 - 变量 a 和 b 有一个不为 True 4 - 变量 a 和 b 都为 True,或其中一个变量为 True 5 - 变量 a 和 b 都为 False,或其中一个变量为 False

Python成员运算符

除了以上的一些运算符之外,Python还支持成员运算符,测试实例中包含了一系列的成员,包括字符串,列表或元组。

运算符描述实例 如果在指定的序列中找到值返回 True,否则返回 False。 x 在 y 序列中 , 如果 x 在 y 序列中返回 True。 not in如果在指定的序列中没有找到值返回 True,否则返回 False。 x 不在 y 序列中 , 如果 x 不在 y 序列中返回 True。

以下实例演示了Python所有成员运算符的操作:

实例(Python 2.0+)

#!/usr/bin/python # -*- coding: UTF-8 -*- a = 10 b = 20 list = [ 1 , 2 , 3 , 4 , 5 ] ; if ( a in list ) : print " 1 - 变量 a 在给定的列表中 list 中 " else : print " 1 - 变量 a 不在给定的列表中 list 中 " if ( b not in list ) : print " 2 - 变量 b 不在给定的列表中 list 中 " else : print " 2 - 变量 b 在给定的列表中 list 中 " # 修改变量 a 的值 a = 2 if ( a in list ) : print " 3 - 变量 a 在给定的列表中 list 中 " else : print " 3 - 变量 a 不在给定的列表中 list 中 "

以上实例输出结果:

1 - 变量 a 不在给定的列表中 list 中 2 - 变量 b 不在给定的列表中 list 中 3 - 变量 a 在给定的列表中 list 中

Python身份运算符

身份运算符用于比较两个对象的存储单元

运算符描述实例 is 是判断两个标识符是不是引用自一个对象 x is y , 类似 id(x) == id(y) , 如果引用的是同一个对象则返回 True,否则返回 False is notis not 是判断两个标识符是不是引用自不同对象 x is not y , 类似 id(a) != id(b) 。如果引用的不是同一个对象则返回结果 True,否则返回 False。

注: id() 函数用于获取对象内存地址。

以下实例演示了Python所有身份运算符的操作:

实例(Python 2.0+)

#!/usr/bin/python # -*- coding: UTF-8 -*- a = 20 b = 20 if ( a is b ) : print " 1 - a 和 b 有相同的标识 " else : print " 1 - a 和 b 没有相同的标识 " if ( a is not b ) : print " 2 - a 和 b 没有相同的标识 " else : print " 2 - a 和 b 有相同的标识 " # 修改变量 b 的值 b = 30 if ( a is b ) : print " 3 - a 和 b 有相同的标识 " else : print " 3 - a 和 b 没有相同的标识 " if ( a is not b ) : print " 4 - a 和 b 没有相同的标识 " else : print " 4 - a 和 b 有相同的标识 "

以上实例输出结果:

1 - a 和 b 有相同的标识 2 - a 和 b 有相同的标识 3 - a 和 b 没有相同的标识 4 - a 和 b 没有相同的标识

is 与 == 区别:

is 用于判断两个变量引用对象是否为同一个(同一块内存空间), == 用于判断引用变量的值是否相等。

>>> a = [1, 2, 3] >>> b = a >>> b is a >>> b == a >>> b = a[:] >>> b is a False >>> b == a

python中会为每个出现的对象分配内存,哪怕他们的值完全相等(注意是相等不是相同)。如执行a=2.0,b=2.0这两个语句时会先后为2.0这个Float类型对象分配内存,然后将a与b分别指向这两个对象。所以a与b指向的不是同一对象:

>>> a=2.0
>>> b=2.0
>>> a is b
False
>>> e

但是为了提高内存利用效率对于一些简单的对象,如一些数值较小的int对象,python采取重用对象内存的办法,如指向a=2,b=2时,由于2作为简单的int类型且数值小,python不会两次为其分配内存,而是只分配一次,然后将a与b同时指向已分配的对象:

>>> a=2
>>> a is b
True

如但果赋值的不是2而是大的数值,情况就跟前面的一样了:

>>> a=4444
>>> b=4444
>>> a is b
False
True
CosmosHua