Python Standard运算符作为函数

在编程中,运算符通常是为执行某些操作(例如加法,减法,比较等)而预先定义的符号(键)。Python具有大量的内置操作集,分为多种类别,例如算术,比较,按位,会员资格等

python库中的operator模块由对应于内置运算符的函数组成。函数的名称类似于相应运算符的类型。例如,add()运算符模块中的功能对应于+运算符。

Python的Object类具有对应于运算符的dunder方法(名称前后带有双下划线)。可以在用户定义的类中适当重载这些dunder方法,以实现运算符重载。运算符模块还包括相应的Dunder功能。例如,add()以及__add __()都实现+符号的操作。

首先,让我们从运算符模块导入功能

>>> from operator import *

要了解与算术运算符相对应的函数,请将两个变量初始化为

>>> a = 10
>>> b = 20

add(),sub()mul()与+,-和*运算符相对应。除的/符号由truediv()方法实现。

>>> add(a,b)
30
>>> a + b
30
>>> sub(a,b)
-10
>>> a - b
-10
>>> mul(a,b)
200
>>> a * b
200
>>> truediv(a,b)
0.5
>>> a / b
0.5

其他算术运算符%,**和//由实现mod()pow()并且floordiv()来自运算符模块。

>>> a = 5
>>> b = 3
>>> a % b
2
>>> mod(a,b)
2
>>> a ** b
125
>>> pow(a,b)
125
>>> a // 2
2
>>> floordiv(a,b)

逻辑运算符<,<=,>,> =,==和!=被实现lt()le()gt()ge()eq()ne()方法分别。

>>> a = 5
>>> b = 7
>>> a < b
True

>>> lt(a,b)
True

>>> a <= b
True

>>> le(a,b)
True

>>> a > b
False

>>> gt(a,b)
False

>>> a >= b
False

>>> ge(a,b)
False

>>> a == b
False

>>> eq(a,b)
False

>>> a != b
True

>>> ne(a,b)
True

使用序列的功能

Python的内置的,+(串联)运算符,和德尔分别由实现的contains()concat()delitem()等功能。对于索引赋值运算符seq [x] = y,使用setitem()函数。为了获得seq [x]的值,getitem()使用函数。

>>> a = [1,2,3]
>>> b = ['a','b','c']
>>> a + b #sequence concatenation
[1, 2, 3, 'a', 'b', 'c']

>>> concat(a,b)
[1, 2, 3, 'a', 'b', 'c']

>>> contains(a,'2') #implements in operator
False

>>> contains(a,2)
True

>>> 2 in a
True

>>> b[1] = 'x' #index assignment implemented by setitem()>>> b
['a', 'x', 'c']

>>> setitem(b,1,'b')
>>> b
['a', 'b', 'c']

>>> a[1] #fetching value at index – implemented by getitem()2

>>> getitem(a,1)
2

>>> del b[2] #deleting element at index. Corresponding function is delitem()>>> b
['a', 'b']

>>> delitem(a,2)
>>> a
[1, 2]

在单个步骤中执行分配和计算的运算符称为就地运算符。Python的就地运算符由运算符模块中的相应功能实现。执行加和分配操作的+ =运算符具有相应的iadd()方法。同样,每个以“ i”为前缀的运算符函数都构成就地等效项。

就地添加

>>> a = 10
>>> b = 20
>>> a = iadd(a,b) #equivalent to a += b
>>> a
30

就地减法

>>> a = 10
>>> b = 20
>>> a = isub(a,b) #equivalent to a -= b
>>> a
-10

就地乘法

>>> a= 10
>>> b = 20
>>> a = imul(a,b) #equivalent to a *= b
>>> a
200

就地分割

>>> a = 10
>>> b = 4
>>> a = itruediv(a,b)
>>> a
2.5

该运算符模块还包含实现标准按位运算符的功能

>>> and_(10,2) #equivalent to 10 & 2
2
>>> or_(10,2) #equivalent to 10 | 2
10
>>> xor(10,2) #equivalent to 10 ^ 2
8
>>> lshift(10,2) #equivalent to 10 << 2
40
>>> rshift(10,2) #equivalent to 10 >> 2
2