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

算术运算符

算术运算符对数值操作数执行常见的数学运算。

算术运算符返回结果的类型取决于操作数的类型,如下所示。

  1. 如果任一操作数是复数,则结果将转换为复数;
  2. 如果任一操作数是浮点数,则结果将转换为浮点数;
  3. 如果两个操作数都是整数,则结果是整数,不需要转换。

下表列出了 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

成员测试操作员

隶属关系测试运算符innot in测试序列是否具有给定项。 对于字符串和字节类型,当且仅当xy 的子字符串时,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)