逻辑运算符

运算符 描述
and 布尔”与”。如果x为False,x and y返回False,否则它返回y的计算值。
or 布尔”或”。如果x是True,x or y它返回x的值,否则它返回y的计算值。
not 布尔”非”。如果x为True,返回False 。如果x为 False,它返回 True。

例如:

1
2
3
4
5
6
f = False
t = True
print("f and t 的值:", f and t)
print("f or t 的值:", f or t)
print("not f 的值:",not f)
print("not t 的值:",not t)

执行以上程序会输出如下结果:

1
2
3
4
f and t 的值: False
f or t 的值: True
not f 的值: True
not t 的值: False

逻辑运算符优先级

由高到低排列 描述
not -
and -
or -

例如:

1
2
3
f = False
t = True
print("t and not f 的值:", t and not f) #先计算not f,结果为True,然后再计算t and True,最后结果是True。
1
2
3
4
5
6
7
a = 1
b = 5
c = 4
result1 = a or b and c # and优先级高,先算5 and 4, 5为真, 值为4. 再算1 or 4, 1 为真,值为1
result2 = (a or b) and c #()优先级高,先算1 or 5, 1为真, 值为1. 再算1 and 4, 1为真,值为4
print(result1)  # 1
print(result2)  # 4

逻辑运算符短路计算

and 和 or都是短路计算。
A and B 如果A是False的话,不计算B的值,直接返回结果False。
A or B 如果A是True的话,不计算B的值,直接返回结果True。

例如:

1
2
3
4
5
6
t = True
f = False
x = 10
y = 0
print("t or x/y 的值:", t or x/y )    #不计算x/y,因此也不会报不能被0除的异常
print("f and x/y 的值:", f and x/y )  #不计算x/y,因此也不会报不能被0除的异常

执行以上程序会输出如下结果:

1
2
t or x/y 的值: True
f and x/y 的值: False

位运算符

只有int类型能进行位计算。

运算符 描述
| 按位或运算符:只要对应的二个二进位有一个为1时,结果位就为1。
^ 按位异或运算符:当两对应的二进位相异时,结果为1
& 按位与运算符:参与运算的两个值,如果两个相应位都为1,则该位结果为1,否则为0
<< 左移动运算符:运算数的各二进位全部左移若干位,由”<<“右边的数指定移动的位数,高位丢弃,低位补0。
>> 右移动运算符:把”>>“左边的运算数的各二进位全部右移若干位,”>>“右边的数指定移动的位数
~ 按位取反运算符:对数据的每个二进制位取反,即把1变为0,把0变为1。~x 类似于-x-1

例如:

1
2
3
4
5
6
7
8
9
x = 11
y = 2
print("x | y 的值:", x | y)
print("x ^ y 的值:", x ^ y)
print("x & y 的值:", x & y)
print("x << y 的值:", x << y)
print("x >> y 的值:", x >> y)
print("~x 的值:", ~x)
print("~y 的值:", ~y)

执行以上程序会输出如下结果:

1
2
3
4
5
6
7
x | y 的值: 11
x ^ y 的值: 9
x & y 的值: 2
x << y 的值: 44
x >> y 的值: 2
~x 的值: -12
~y 的值: -3

注意: <<,>>后跟的必须是正整数,复数的话,报错,抛出ValueError异常。

例如:

1
2
3
x = 11
y = -2
print ("x << y 的值:", x << y)

执行以上程序会输出如下结果:

1
2
3
4
Traceback (most recent call last):
  File "main.py", line 3, in <module>
    print ("x << y 的值:", x << y)
ValueError: negative shift count

位运算符优先级

由高到低排列 描述
~ 按位取反
<<,>> 移位
& 按位与
^ 按位异或
| 按位或

例如:

1
2
3
4
5
x = 11
y = 2
z = 5
print ("x | y & z 的值:", x | y & z)     # 先计算y & z,结果再和x计算。
print ("(x | y) & z 的值:", (x | y) & z) # 优先先计算括号内的值(x | y) ,结果再和z计算。

执行以上程序会输出如下结果:

1
2
x | y & z 的值: 11
(x | y) & z 的值: 1

赋值运算符

运算符 描述
= 简单赋值运算符
+= 加法赋值运算符
-= 减法赋值运算符
*= 乘法赋值运算符
/= 除法赋值运算符
%= 取模赋值运算符
**= 幂赋值运算符
//= 取整除赋值运算符

例如:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
a = 10  # 简单赋值运算符,将整数10赋值给变量a
b = 1   # 简单赋值运算符,将整数2赋值给变量b
b += a
print("b += a的值:", b)
b -= a
print("b -= a的值:", b)
b *= a
print("b *= a的值:", b)
b /= a
print("b /= a的值:", b)
b ** a
print("b ** a的值:", b)
b //= a
print("b //= a的值:", b)

执行以上程序会输出如下结果:

1
2
3
4
5
6
b += a的值 11
b -= a的值 1
b *= a的值 10
b /= a的值 1.0
b ** a的值 1.0
b //= a的值 0.0

成员运算符

运算符 描述
in 如果在指定的序列中找到值返回True,否则返回False。
not in 如果在指定的序列中没有找到值返回True,否则返回False。not in是in的反操作。

例如:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
list = ['a','b','c']
a = 'a'
if a in list:
    print("in操作:list列表包含成员'a'")
else:
    print("in操作:list列表不包含成员'a'")
if a not in list:
    print("not in操作:list列表不包含成员'a'")
else:
    print("not in操作:list列表包含成员'a'")

执行以上程序会输出如下结果:

1
2
in操作:list列表包含成员'a'
not in操作:list列表包含成员'a'

转载请注明本网址。