简述
在 Python 中,运算符是执行算术或逻辑运算的特殊符号,操作的值被称为操作数。例如:
>>>5 + 6
11
这里,+ 是执行加法的运算符,5 和 6 是操作数,11 是操作的输出。
运算符种类
在 Python 中,支持以下类型的运算符:
算术运算符
比较(关系)运算符
逻辑(布尔)运算符
位运算符
赋值运算符
特殊运算符
成员运算符
身份运算符
算术运算符
算术运算符用于执行加、减、乘、除等数学运算。
运算符
含义
示例
+
加 - 两个操作数相加,或者一元加
x + y
-
减 - 两个操作数相减,或者一元减
x - y
*
乘 - 两个操作数相乘,或是返回一个被重复若干次的字符串
x * y
/
除 - 两个操作数相除(总是浮点数)
x / y
%
取模 - 返回除法(/)的余数
x % y(x/y 的余数)
//
取整除 - 返回商的整数部分
x // y
**
幂 - 返回 x 的 y 次幂
x ** y
以下示例演示了 Python 中所有算术运算符的操作:
>>>x = 8
>>>y = 3
>>>
>>>x + y
11
>>>
>>>x - y
5
>>>
>>>x * y
24
>>>
>>>x / y # 总是浮点数
2.6666666666666665
>>>
>>>x // y
2
>>>
>>>x ** y
512
注意: 除法 / 运算的结果总是浮点数。例如:4 / 2 返回的是 2.0,而不是 2。
比较运算符
比较运算符又称关系运算符,用于比较值,根据条件返回 True 或 False。
运算符
含义
示例
>
大于 - 如果左操作数大于右操作数,则为 True
x > y
<
小于 - 如果左操作数小于右操作数,则为 True
x < y
==
等于 - 如果两个操作数相等,则为 True
x == y
!=
不等于 - 如果两个操作数不相等,则为 True
x != y
>=
大于等于 - 如果左操作数大于或等于右操作数,则为 True
x >= y
<=
小于等于 - 如果左操作数小于或等于右操作数,则为 True
x <= y
以下示例演示了 Python 中所有比较运算符的操作:
>>>x = 6
>>>y = 10
>>>
>>>x > y
False
>>>
>>>x < y
True
>>>
>>>x == y
False
>>>
>>>x != y
True
>>>
>>>x >= y
False
>>>
>>>x <= y
True
逻辑运算符
逻辑运算符又称布尔运算符,通常用于测试真假值。
运算符
含义
示例
and
逻辑与 - 如果两个操作数都为 True,则为 True
x and y
or
逻辑或 - 如果任一操作数为 True,则为 True
x or y
not
逻辑非 - 如果操作数为 False,则为 True(补数)
not x
以下示例演示了 Python 中所有逻辑运算符的操作:
>>>x = True
>>>y = False
>>>
>>>x and y
False
>>>
>>>x or y
True
>>>
>>>not x
False
>>>
>>>not y
True
位运算符
位运算符作用于操作数,就像它们是二进制数字的字符串一样,它一点点地运行,因此而得名。
运算符
含义
示例
&
按位与(AND)
x & y
`
`
按位或(OR)
~
按位翻转/取反(NOT)
~x
^
按位异或(XOR)
x ^ y
>>
按位右移
x >> 2
<<
按位左移
x << 2
例如:2 是二进制 10,7 是 111。
令 x = 10(二进制 0000 1010),y = 4(二进制 0000 0100),进行位运算:
>>>x = 10 # 二进制 0000 1010
>>>y = 4 # 二进制 0000 0100
>>>
>>>x & y # 0000 0000
0
>>>
>>>x | y # 0000 1110
14
>>>
>>>~x # 1111 0101
-11
>>>
>>>x ^ y # 0000 1110
14
>>>
>>>x >> 2 # 0000 0010
2
>>>
>>>x << 2 # 0010 1000
40
赋值运算符
赋值运算符用于为变量赋值。
例如:x = 5,是一个简单的赋值运算符,它将右侧的值 5 分配给左侧的变量 x。
在 Python 中,有各种各样的复合运算符,例如:x += 5,先将变量 x 的值与 5 相加,再将最终结果分配给变量 x,等价于:x = x + 5。
运算符
示例
等价于
=
x = 5
x = 5(相同)
+=
x += 5
x = x + 5
-=
x -= 5
x = x - 5
*=
x *= 5
x = x * 5
/=
x /= 5
x = x / 5
%=
x %= 5
x = x % 5
//=
x //= 5
x = x // 5
**=
x **= 5
x = x ** 5
&=
x &= 5
x = x & 5
`
=`
`x
^=
x ^= 5
x = x ^ 5
>>=
x >>= 5
x = x >> 5
<<=
x <<= 5
x = x << 5
特殊运算符
除以上运算符外,Python 还提供了一些特殊类型的运算符:
身份运算符
成员运算符
身份运算符
身份运算符用于检查两个值(或变量)是否位于存储器的同一部分。
注意: 两个变量相等,并不意味着它们也相同。
运算符
含义
示例
is
如果操作数相同,则为 True(引用同一个对象)
x is True
is not
如果操作数不相同,则为 True(引用不同的对象)
x is not True
以下示例演示了 Python 中所有身份运算符的操作:
>>>x1 = 5
>>>y1 = 5
>>>
>>>x2 = 'Python'
>>>y2 = 'Python'
>>>
>>>x3 = [1, 2, 3]
>>>y3 = [1, 2, 3]
>>>
>>>x1 is not y1
False
>>>
>>>x2 is y2
True
>>>
>>>x3 is y3
False
可以看到 x1 和 y1 是相同值的整数,所以它们相等且相同。x2 和 y2(字符串)同样是这样。
但 x3 和 y3 是列表,它们相等,但不相同。由于列表是可变的(可以更改),即使它们相等,解释器也会将它们分别存储在内存中。
成员运算符
成员运算符用于测试在序列(字符串、列表、元组、集合和字典)中是否可以找到一个值/变量。
注意: 在字典中,只能检测 key 是否存在,而不能检测 value。
运算符
含义
示例
in
如果在序列中找到值/变量,则为 True
5 in x
not in
如果在序列中没有找到值/变量,则为 True
5 not in x
以下示例演示了 Python 中所有成员运算符的操作:
>>>x = 'Hello, World!' # 字符串
>>>y = {1:'Java', 2:'Python'} # 字典
>>>
>>>'H' in x
True
>>>
>>>'hello' not in x
True
>>>
>>>1 in y
True
>>>
>>>'Python' in y
False
这里,'H' 在 x 中,但 'hello' 不存在于 x 中(切记,Python 是区分大小写的)。同样地,1 是 key,'Python' 是字典 y 中的值。因此,'Python' in y 返回 False。