Python 语言支持以下类型的运算符:
- 算术运算符
 - 赋值运算符
 - 比较(关系)运算符
 - 逻辑运算符
 - 位运算符
 - 成员运算符
 - 身份运算符
 - 运算符优先级
 
算术运算符
以下假设变量 a 为21,变量 b 为10:
| 运算符 | 描述 | 实例 | 运算结果 | 
|---|---|---|---|
| + | 加 两个对象相加  | 
a + b | 31 | 
| - | 减 得到负数或是一个数减去另一个数  | 
a - b | 11 | 
| * | 乘  两个数相乘或是返回一个被重复若干次的字符串  | 
a * b | 210 | 
| / | 除  x 除以 y  | 
a / b | 2.1 | 
| // | 取整除 向下取接近商的整数  | 
a // b -a // b  | 
2 -3  | 
| % | 取模 返回除法的余数  | 
a % b | 1 | 
| ** | 幂 返回x的y次幂  | 
a ** b | 21^10 | 
以下实例演示了Python所有算术运算符的操作:
#!/usr/bin/python3a = 21b = 10result = 0result = a + bprint ("a + b 的值为:", result)result = a - bprint ("a - b 的值为:", result)result = a * bprint ("a * b 的值为:", result)result = a / bprint ("a / b 的值为:", result)result = a % bprint ("a % b 的值为:", result)result = a // bprint ("a // b 的值为:", result)result = -a // bprint ("-a // b 的值为:", result)result = 2 ** 3print ("2 ** 3 的值为:", result)"""a + b 的值为: 31a - b 的值为: 11a * b 的值为: 210a / b 的值为: 2.1a % b 的值为: 1a // b 的值为: 2-a // b 的值为: -32 ** 3 的值为: 8"""
赋值运算符
以下假设变量a为21,变量b为10:
| 运算符 | 描述 | 实例 | 等价与 | 
|---|---|---|---|
| = | 简单的赋值运算符 | c = a + b | 将 a + b 的运算结果赋值为 c | 
| += | 加法赋值运算符 | c += a | c = c + a | 
| -= | 减法赋值运算符 | c -= a | c = c - a | 
| *= | 乘法赋值运算符 | c *= a | c = c * a | 
| /= | 除法赋值运算符 | c /= a | c = c / a | 
| %= | 取模赋值运算符 | c %= a | c = c % a | 
| **= | 幂赋值运算符 | c **= a | c = c ** a | 
| //= | 取整除赋值运算符 | c //= a | c = c // a | 
| := | 海象运算符 可在表达式内部为变量赋值。Python3.8 版本新增运算符。  | 
在这个示例中,赋值表达式可以避免调用 len() 两次:![]()  | 
以下实例演示了Python所有赋值运算符的操作:
#!/usr/bin/python3a = 21b = 10c = 0c = a + bprint ("c = a + b 的值为:", c)c += aprint ("c += a 的值为:", c)c *= aprint ("c *= a 的值为:", c)c /= aprint ("c /= a 的值为:", c)c %= aprint ("c %= a 的值为:", c)c **= aprint ("c **= a 的值为:", c)c //= aprint ("c //= a 的值为:", c)print ("c := a 的值为:", c := a)"""c = a + b 的值为: 31c += a 的值为: 52c *= a 的值为: 1092c /= a 的值为: 52.0c %= a 的值为: 10.0c **= a 的值为: 1e+21c //= a 的值为: 4.761904761904762e+19c := a 的值为: 21"""
比较运算符
以下假设变量a为21,变量b为10:
| 运算符 | 描述 | 实例 | 结果 | 
|---|---|---|---|
| == | 等于 比较对象是否相等  | 
a == b | False | 
| != | 不等于 比较两个对象是否不相等  | 
a != b | True | 
| > | 大于 返回x是否大于y  | 
a > b | True | 
| < | 小于 返回x是否小于y。所有比较运算符返回1表示真,返回0表示假。这分别与特殊的变量True和False等价。注意,这些变量名的大写。  | 
a < b | False | 
| >= | 大于等于 返回x是否大于等于y。  | 
a >= b | True | 
| <= | 小于等于 返回x是否小于等于y。  | 
a <= b | False | 
以下实例演示了Python所有比较运算符的操作:
#!/usr/bin/python3a = 21b = 10c = 0if ( a == b ):print ("a 等于 b")else:print ("a 不等于 b")if ( a != b ):print ("a 不等于 b")else:print ("a 等于 b")if ( a < b ):print ("a 小于 b")else:print ("a 大于等于 b")if ( a > b ):print ("a 大于 b")else:print ("a 小于等于 b")# 修改 a = 10a = 10if ( a <= b ):print ("修改a=10后 a小于等于 b")else:print ("修改a=10后 a大于b")if ( b >= a ):print ("修改a=10后 b大于等于 a")else:print ("修改a=10后 b小于a")"""a 不等于 ba 不等于 ba 大于等于 ba 大于 b修改a=10后 a小于等于 b修改a=10后 b大于等于 a"""
逻辑运算符
Python语言支持逻辑运算符,以下假设变量 a 为 21, b为 10:
| 运算符 | 描述 | 实例 | 结果 | 
|---|---|---|---|
| and | 布尔与 如果 x 为 False,x and y 返回 x 的值,否则返回 y 的计算值。  | 
a and b | 10 | 
| or | 布尔或 如果 x 是 True,它返回 x 的值,否则它返回 y 的计算值  | 
a or b | 21 | 
| not | 布尔非 如果 x 为 True,返回 False 。如果 x 为 False,它返回 True。  | 
not(a and b) | False | 
以上实例输出结果:
#!/usr/bin/python3a = 21b = 10if ( a and b ):print ("变量a和b都为true",a and b)else:print ("变量a和b有一个不为true",a and b)if ( a or b ):print ("变量a和b都为true,或其中一个变量为true",a and b)else:print ("变量a和b都不为true",a and b)# 修改a=0a = 0if ( a and b ):print ("修改a=0后: 变量a和b都为true",a and b)else:print ("修改a=0后: 变量a和b有一个不为true",a and b)if ( a or b ):print ("修改a=0后: 变量a和b都为true,或其中一个变量为true",a and b)else:print ("修改a=0后: 变量a和b都不为true",a and b)if not( a and b ):print ("修改a=0后: 变量a和b都为false,或其中一个变量为false",not( a and b ))else:print ("修改a=0后: 变量a和b都为true",not( a and b ))if not a:print ("修改a=0后: not a=",not a)"""变量a和b都为true 10变量a和b都为true,或其中一个变量为true 10修改a=0后: 变量a和b有一个不为true 0修改a=0后: 变量a和b都为true,或其中一个变量为true 0修改a=0后: 变量a和b都为false,或其中一个变量为false True修改a=0后: not a= True"""
位运算符
按位运算符是把数字看作二进制来进行计算的。Python中的按位运算法则如下:
下表中变量 a 为 60,b 为 13二进制格式如下:
a = 0011 1100b = 0000 1101-----------------a&b = 0000 1100a|b = 0011 1101a^b = 0011 0001~a = 1100 0011
| p | q | p & q | p | q | p ^ q | 
|---|---|---|---|---|
| 0 | 0 | 0 | 0 | 0 | 
| 0 | 1 | 0 | 1 | 1 | 
| 1 | 0 | 0 | 1 | 1 | 
| 1 | 1 | 1 | 1 | 0 | 
| A | B | A&B | A|B | A^B | 
| 0011 1100 | 0000 1101 | 0000 1100 | 0011 1101 | 0011 0001 | 
| 对应的十进制整数 | ||||
| 60 | 13 | 12 | 61 | 49 | 
| 运算符 | 描述 | 实例 | 结果 | 
|---|---|---|---|
| & | 按位与 参与运算的两个值,如果两个相应位都为1,则该位的结果为1,否则为0  | 
a & b | 12 二进制 0000 1100  | 
| | | 按位或 只要对应的二个二进位有一个为1时,结果位就为1。  | 
a | b | 61 二进制 0011 1101  | 
| ^ | 按位异 当两对应的二进位相异时,结果为1  | 
a ^ b | 49 二进制 0011 0001  | 
| ~ | 按位取反 对数据的每个二进制位取反,即把1变为0,把0变为1。 ~x 类似于 -x-1  | 
~a | -61 二进制 1100 0011 在一个有符号二进制数的补码形式  | 
| << | 左移动 运算数的各二进位全部左移若干位,由”<<”右边的数指定移动的位数,高位丢弃,低位补0。  | 
a << 2 | 240 二进制 1111 0000  | 
| >> | 右移动 把”>>”左边的运算数的各二进位全部右移若干位,”>>”右边的数指定移动的位数  | 
a >> 2 | 15  二进制 0000 1111  | 
以下实例演示了Python所有位运算符的操作:
a = 60 # 60 = 0011 1100b = 13 # 13 = 0000 1101c = 0c = a & bprint("1 - c 的值为:", c) # 12 = 0000 1100c = a | bprint("2 - c 的值为:", c) # 61 = 0011 1101c = a ^ bprint("3 - c 的值为:", c) # 49 = 0011 0001c = ~aprint("4 - c 的值为:", c) # -61 = 1100 0011c = a << 2print("5 - c 的值为:", c) # 240 = 1111 0000c = a >> 2print("6 - c 的值为:", c) # 15 = 0000 1111"""1 - c 的值为: 122 - c 的值为: 613 - c 的值为: 494 - c 的值为: -615 - c 的值为: 2406 - c 的值为: 15"""
Python成员运算符
除了以上的一些运算符之外,Python还支持成员运算符,测试实例中包含了一系列的成员,包括字符串,列表或元组。
| 运算符 | 描述 | 实例 | 
|---|---|---|
| in | 如果在指定的序列中找到值返回 True,否则返回 False。 | x 在 y 序列中 , 如果 x 在 y 序列中返回 True。 | 
| not in | 如果在指定的序列中没有找到值返回 True,否则返回 False。 | x 不在 y 序列中 , 如果 x 不在 y 序列中返回 True。 | 
以下实例演示了Python所有成员运算符的操作:
#!/usr/bin/python3a = 10b = 20list = [1, 2, 3, 4, 5 ]if ( a in list ):print ("变量a=10:在给定的列表中 list 中")else:print ("变量a=10:不在给定的列表中 list 中")if ( b not in list ):print ("变量b=20: 不在给定的列表中list中")else:print ("变量b=20: 在给定的列表中list中")# 修改变量 a 的值a = 2if ( a in list ):print ("变量a=2: 在给定的列表中 list 中")else:print ("变量a=2: 不在给定的列表中 list 中")"""变量a=10:不在给定的列表中 list 中变量b=20: 不在给定的列表中list中变量a=2: 在给定的列表中 list 中"""
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所有身份运算符的操作:
#!/usr/bin/python3a = 20b = 20print ("id(a)=%d,id(b)=%d"%(id(a),id(b)))if ( a is b ):print ("a 和 b 有相同的标识")else:print ("a 和 b 没有相同的标识")if ( id(a) == id(b) ):print ("a 和 b 有相同的标识")else:print ("a 和 b 没有相同的标识")# 修改变量 b 的值b = 30if ( a is b ):print ("a 和 b 有相同的标识")else:print ("a 和 b 没有相同的标识")if ( a is not b ):print ("a 和 b 没有相同的标识")else:print ("a 和 b 有相同的标识")"""id(a)=4449353040,id(b)=4449353040a 和 b 有相同的标识a 和 b 有相同的标识a 和 b 没有相同的标识a 和 b 没有相同的标识"""
Python运算符优先级
以下表格列出了从最高到最低优先级的所有运算符:
| 运算符 | 描述 | 
|---|---|
| ** | 指数 (最高优先级) | 
| ~ + - | 按位翻转, 一元加号和减号 (最后两个的方法名为 +@ 和 -@) | 
| * / % // | 乘,除,求余数和取整除 | 
| + - | 加法减法 | 
| >> << | 右移,左移运算符 | 
| & | 位 ‘AND’ | 
| ^ | | 位运算符 | 
| <= < > >= | 比较运算符 | 
| == != | 等于运算符 | 
| = %= /= //= -= += = *= | 赋值运算符 | 
| is is not | 身份运算符 | 
| in not in | 成员运算符 | 
| not and or | 逻辑运算符 | 
以下实例演示了Python所有运算符优先级的操作:
#!/usr/bin/python3a = 20b = 10c = 15d = 5e = 0e = (a + b) * c / dprint ("(a + b) * c / d 运算结果为:", e) # (30 * 15) / 5 = 90.0e = ((a + b) * c) / dprint ("((a + b) * c) / d 运算结果为:", e) # (30 * 15 ) / 5 = 90.0e = (a + b) * (c / d)print ("(a + b) * (c / d) 运算结果为:", e) # (30) * (15/5) = 90.0e = a + (b * c) / dprint ("a + (b * c) / d 运算结果为:", e) # 20 + (150/5) = 50.0
and 拥有更高优先级:
x = Truey = Falsez = Falseif (x or y) and z:print("yes")else:print("no")if x or (y and z):print("yes")else:print("no")"""noyes"""
⚠️注意:Pyhton3 已不支持 <> 运算符,可以使用 != 代替,如果你一定要使用这种比较运算符,可以使用以下的方式
>>> from __future__ import barry_as_FLUFL>>> 1 <> 2True

