在编程中,运算符通常是为执行某些操作(例如加法,减法,比较等)而预先定义的符号(键)。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