#!/usr/bin/python3a = 60# 60 = 0011 1100 b = 13# 13 = 0000 1101 c = 0c = a & b# 12 = 0000 1100print("1 - c 的值为:", c)c = a | b# 61 = 0011 1101 print("2 - c 的值为:", c)c = a ^ b# 49 = 0011 0001print("3 - c 的值为:", c)c = ~a# -61 = 1100 0011print("4 - c 的值为:", c)c = a << 2# 240 = 1111 0000print("5 - c 的值为:", c)c = a >> 2# 15 = 0000 1111print("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:
运算符
逻辑表达式
描述
实例
and
x and y
布尔"与" - 如果 x 为 False,x and y 返回 x 的值,否则返回 y 的计算值。
(a and b) 返回 20。
or
x or y
布尔"或" - 如果 x 是 True,它返回 x 的值,否则它返回 y 的计算值。
(a or b) 返回 10。
not
not x
布尔"非" - 如果 x 为 True,返回 False 。如果 x 为 False,它返回 True。
not(a and b) 返回 False
以上实例输出结果:
实例
#!/usr/bin/python3a = 10b = 20if(aandb):
print("1 - 变量 a 和 b 都为 true")else:
print("1 - 变量 a 和 b 有一个不为 true")if(aorb):
print("2 - 变量 a 和 b 都为 true,或其中一个变量为 true")else:
print("2 - 变量 a 和 b 都不为 true")# 修改变量 a 的值a = 0if(aandb):
print("3 - 变量 a 和 b 都为 true")else:
print("3 - 变量 a 和 b 有一个不为 true")if(aorb):
print("4 - 变量 a 和 b 都为 true,或其中一个变量为 true")else:
print("4 - 变量 a 和 b 都不为 true")ifnot(aandb):
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
#!/usr/bin/python3a = 10b = 20list = [1, 2, 3, 4, 5]if(ainlist):
print("1 - 变量 a 在给定的列表中 list 中")else:
print("1 - 变量 a 不在给定的列表中 list 中")if(bnotinlist):
print("2 - 变量 b 不在给定的列表中 list 中")else:
print("2 - 变量 b 在给定的列表中 list 中")# 修改变量 a 的值a = 2if(ainlist):
print("3 - 变量 a 在给定的列表中 list 中")else:
print("3 - 变量 a 不在给定的列表中 list 中")
以上实例输出结果:
实例
1 - 变量 a 不在给定的列表中 list 中
2 - 变量 b 不在给定的列表中 list 中
3 - 变量 a 在给定的列表中 list 中
Python身份运算符
身份运算符用于比较两个对象的存储单元
运算符
描述
实例
is
is 是判断两个标识符是不是引用自一个对象
x is y, 类似 id(x)
== id(y) , 如果引用的是同一个对象则返回 True,否则返回
False
is not
is not 是判断两个标识符是不是引用自不同对象
x is not y , 类似 id(x)
!= id(y)。如果引用的不是同一个对象则返回结果 True,否则返回
False。
身份运算符用于比较两个对象的存储单元
注: id() 函数用于获取对象内存地址。
以下实例演示了Python所有身份运算符的操作:
#!/usr/bin/python3a = 20b = 20if(aisb):
print("1 - a 和 b 有相同的标识")else:
print("1 - a 和 b 没有相同的标识")if(id(a) == id(b)):
print("2 - a 和 b 有相同的标识")else:
print("2 - a 和 b 没有相同的标识")# 修改变量 b 的值b = 30if(aisb):
print("3 - a 和 b 有相同的标识")else:
print("3 - a 和 b 没有相同的标识")if(aisnotb):
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
>>> bisaTrue
>>> b == aTrue
>>> b = a[:]
>>> bisaFalse
>>> b == aTrue
#!/usr/bin/python3a = 20b = 10c = 15d = 5e = 0e = (a + b) * c / d#( 30 * 15 ) / 5print("(a + b) * c / d 运算结果为:", e)e = ((a + b) * c) / d# (30 * 15 ) / 5print("((a + b) * c) / d 运算结果为:", e)e = (a + b) * (c / d)# (30) * (15/5)print("(a + b) * (c / d) 运算结果为:", e)e = a + (b * c) / d# 20 + (150/5)print("a + (b * c) / d 运算结果为:", e)
以上实例输出结果:
(a + b) * c / d 运算结果为: 90.0
((a + b) * c) / d 运算结果为: 90.0
(a + b) * (c / d) 运算结果为: 90.0
a + (b * c) / d 运算结果为: 50.0
and 拥有更高优先级:
x = Truey = Falsez = Falseprint("情况1:默认优先级(先算and)")ifxoryandz: # 等同于 x or (y and z)print("yes")# 会输出else:
print("no")print("\n情况2:强制改变优先级(先算or)")if(xory)andz: # 人为添加括号改变顺序print("yes")# 不会输出else:
print("no")# 会输出
以上实例先计算 y and z 并返回 False ,然后 x or False 返回 True,输出结果: