Python 运算符:算术、赋值、比较、逻辑、恒等、成员资格、按位
2023-09-17 22:14:59
运算符是对操作数执行某些操作并返回结果的特殊符号。例如,5 + 6
是一个表达式,其中 +
是一个运算符,它对数字左操作数5
和右侧操作数6
执行算术加法运算,并返回两个操作数的总和作为结果。
Python 包括 operator 模块,其中包含每个运算符的基础方法。例如,+
运算符调用 operator.add(a,b)
方法。
示例: Operator Methods
import operator
n=5+5
print(n)
n=operator.add(5, 10)
print(n)
n=operator.__add__(5, 20)
print(n)
上面,表达式5 + 6
等效于表达式operator.add(5, 6)
和operator.__add__(5, 6)
。 许多函数名称是用于特殊方法的名称,没有双下划线(dunder 方法)。 为了向后兼容,其中许多具有保留双下划线的功能。
Python 包括以下类别的运算符:
- Arithmetic Operators
- Assignment Operators
- Comparison Operators
- Logical Operators
- Identity Operators
- Membership Test Operators
- Bitwise Operators
算术运算符
算术运算符对数值操作数执行常见的数学运算。
算术运算符返回结果的类型取决于操作数的类型,如下所示。
- 如果任一操作数是复数,则结果将转换为复数;
- 如果任一操作数是浮点数,则结果将转换为浮点数;
- 如果两个操作数都是整数,则结果是整数,不需要转换。
下表列出了 Python 中的所有算术运算符:
Operation | 运算符 | Function | Example in Python Shell |
---|---|---|---|
Addition: Sum of two operands | + | operator.add(a,b) |
x,y= 5,6 print(x + y) #output: 11 import operator operator.add(5,6) #output: 11 |
Subtraction: Left operand minus right operand | - | operator.sub(a,b) |
x,y =5,6 print(x - y) #output: -1 import operator operator.sub(10, 5) #output: 5 |
Multiplication | * | operator.mul(a,b) |
x,y =5,6 print(x * y) #output: 30 import operator operator.mul(5,6) #output: 30 |
Exponentiation: Left operand raised to the power of right | ** | operator.pow(a,b) |
x = 2; y = 3 print(x ** y) #output: 8 import operator operator.pow(2, 3) #output: 8 |
Division | / | operator.truediv(a,b) |
x = 6; y = 3 print(x / y) #output: 2 import operator operator.truediv(6, 3) #output: 2 |
Floor division: equivilant to math.floor(a/b) |
// | operator.floordiv(a,b) |
x = 6; y = 5 print(x // y) #output: 1 import operator operator.floordiv(6,5) #output: 1 |
Modulus: Reminder of a/b |
% | operator.mod(a, b) |
x = 11; y = 3 print(x % y) #output: 12 import operator operator.mod(11, 3) #output: 2 |
赋值运算符
赋值运算符用于为变量赋值。下表列出了 Python 中的所有算术运算符:
运算符 | Function | Example in Python Shell |
---|---|---|
= |
x = 5; x 5 |
|
+= | operator.iadd(a,b) |
x = 5 print(x += 5) #output: 10 import operator x = operator.iadd(5, 5) #output: 10 |
-= | operator.isub(a,b) |
x = 5 print(x -= 2) #output: 3 import operator x = operator.isub(5,2) |
*= | operator.imul(a,b) |
x = 2 print(x *= 3) #output: 6 import operator x = operator.imul(2, 3) |
/= | operator.itruediv(a,b) |
x = 6 print(x /= 3) #output: 2 import operator x = operator.itruediv(6, 3) |
//= | operator.ifloordiv(a,b) |
x = 6 print(x //= 5) #output: 1 import operator operator.ifloordiv(6,5) |
%= | operator.imod(a, b) |
x = 11 print(x %= 3) #output: 2 import operator operator.imod(11, 3) #output: 2 |
&= | operator.iand(a, b) |
x = 11 print(x &= 3) #output: 1 import operator operator.iand(11, 3) #output: 1 |
|= | operator.ior(a, b) |
x = 3 print(x |= 4) #output: 7 import operator operator.mod(3, 4) #output: 7 |
^= | operator.ixor(a, b) |
x = 5 print(x ^= 2) #output: 7 import operator operator.ixor(5, 2) #output: 7 |
>>= | operator.irshift(a, b) |
x = 5 print(x >>= 2) #output: 1 import operator operator.irshift(5, 2) #output: 1 |
<<= | operator.ilshift(a, b) |
x = 5 print(x <<= 2) #output: 20 import operator operator.ilshift(5, 2) #output: 20 |
比较运算符
比较运算符比较两个操作数并返回 True 或 False 的布尔值。 下表列出了 Python 中的比较运算符。
运算符 | Function | 描述 | Example in Python Shell |
---|---|---|---|
> | operator.gt(a,b) | 如果左操作数高于右操作数,则为 True,则为 |
x,y =5,6 print(x > y) #output: False import operator operator.gt(5,6) #output: False |
< | operator.lt(a,b) | 如果左操作数低于右操作数,则为 True |
x,y =5,6 print(x < y) #output: True import operator operator.add(5,6) #output: True |
== | operator.eq(a,b) | 如果操作数相等,则为 True |
x,y =5,6 print(x == y) #output: False import operator operator.eq(5,6) #output: False |
!= | operator.ne(a,b) | 如果操作数不相等,则为 True |
x,y =5,6 print(x != y) #output: True import operator operator.ne(5,6) #output: True |
>= | operator.ge(a,b) | 如果左操作数大于或等于右操作数,则为 True |
x,y =5,6 print(x >= y) #output: False import operator operator.ge(5,6) #output: False |
<= | operator.le(a,b) | 如果左操作数小于或等于右操作数,则为 True |
x,y =5,6 print(x <= y) #output: True import operator operator.le(5,6) #output: True |
逻辑运算符
逻辑运算符用于组合两个布尔表达式。逻辑运算一般适用于所有对象,支持真值检验、恒等检验和布尔运算。
运算符 | 描述 | 例子 |
---|---|---|
and | 如果两者都为真,则为 true |
x,y =5,6 print(x > 1 and y <10) #output: True |
or | 如果至少有一个为真,则为 true |
x,y =5,6 print(x > 6 or y <10) #output: True |
not | 如果表达式计算为 false,则返回 True,反之亦然 |
x = 5 print(not x > 1) #output: False |
标识运算符
标识运算符检查两个对象是否具有相同的 id 值,即两个对象都指向相同的内存位置。
运算符 | Function | 描述 | Example in Python Shell |
---|---|---|---|
is | operator.is_(a,b) | 如果两者都为真,则为 true |
x,y =5,6 print(x is y) #output: False import operator operator.is_(x,y) #output: False |
is not | operator.is_not(a,b) | 如果至少有一个为真,则为 true |
x,y =5,6 print(x is not y) #output: True import operator operator.is_not(x, y) #output: True |
成员测试操作员
隶属关系测试运算符in
并not in
测试序列是否具有给定项。 对于字符串和字节类型,当且仅当x
是 y
的子字符串时,x in y
为 True。
运算符 | Function | 描述 | Example in Python Shell |
---|---|---|---|
in | operator.contains(a,b) | 如果序列包含指定的项,则返回 True,否则返回 False。 |
nums = [1,2,3,4,5] print(1 in nums) #output: True print(10 in nums) #output: False print('str' in 'string') #output: True import operator operator.contains(nums, 2) #output: True |
not in | not operator.contains(a,b) | 如果序列不包含指定的项,则返回 True,否则返回 False。 |
nums = [1,2,3,4,5] print(1 not in nums) #output: False print(10 not in nums) #output: True print('str' not in 'string') #output: False import operator not operator.contains(nums, 2) #output: False |
按位运算符
按位运算符对二进制操作数执行操作。
运算符 | Function | 描述 | Example in Python Shell |
---|---|---|---|
& | operator.and_(a,b) | 如果两个位均为 1,则将每个位设置为 1。 |
x=5; y=10 z=x & y print(z) #output: 0 import operator operator.and_(x, y) |
| | operator.or_(a,b) | 如果两个位中的一个为 1,则将每个位设置为 1。 |
x=5; y=10 z=x | y print(z) #output: 15 import operator operator.or_(x, y) |
^ | operator.xor(a,b) | 如果两个位中只有一个位为 1,则将每个位设置为 1。 |
x=5; y=10 z=x ^ y print(z) #output: 15 import operator operator.xor(x, y) |
~ | operator.invert(a) | 反转所有位。 |
x=5 print(~x) #output: -6 import operator operator.invert(x) |
<< | operator.lshift(a,b) | 通过从右侧推入零向左移动,让最左边的位脱落。 |
x=5 print(x<<2) #output: 20 import operator operator.lshift(x,2) |
>> | operator.rshift(a,b) | 通过从左侧推入最左侧位的副本来向右移动,并让最右侧位脱落。 |
x=5 print(x>>2) #output: 1 import operator operator.rshift(x,2) |