📅  最后修改于: 2023-12-03 15:18:08.078000             🧑  作者: Mango
Python提供了名为“operators”的内置模块,其中包含了许多运算符相关的函数。这些函数可以用于不同的数据类型、不同的运算场景中,来方便地进行各种运算。在这个模块中,最主要的是add()
,sub()
,mul()
等函数。
这些函数分别对应了基本的“加”、“减”、“乘”三种运算。具体使用可以看下面的代码片段:
import operator
opslist = {operator.add: "+", operator.sub: "-", operator.mul: "x"}
a, b = 3, 4
for op, sym in opslist.items():
print(f"{a} {sym} {b} = {op(a, b)}")
这段代码会输出:
3 + 4 = 7
3 - 4 = -1
3 x 4 = 12
这里使用了opslist
来存储不同的运算符。然后通过循环,可以很方便地进行不同种类的运算操作。
除了基本的运算,operators
模块还提供了很多其他可以方便实用的函数,例如:floordiv()
用于整除运算,truediv()
用于浮点数除法,pow()
用于求幂运算等等。
这里给一个进阶使用的例子-比较两个对象的大小:
import operator
class MyObj:
def __init__(self, val):
self.val = val
def __lt__(self, other):
return self.val < other.val
def __eq__(self, other):
return self.val == other.val
objs = [MyObj(i) for i in range(1, 6)]
print("Original: ", [obj.val for obj in objs])
objs.sort(key=operator.attrgetter('val'))
print("Ascending: ", [obj.val for obj in objs])
objs.sort(key=operator.attrgetter('val'), reverse=True)
print("Descending: ", [obj.val for obj in objs])
这段代码可以输出:
Original: [1, 2, 3, 4, 5]
Ascending: [1, 2, 3, 4, 5]
Descending: [5, 4, 3, 2, 1]
在这段代码中,自定义了一个类MyObj
,其中包含了__lt__
和__eq__
这两个函数。这里要比较的是类的对象之间的大小。然后使用attrgetter()
函数获取val
属性,并按顺序进行排序。
值得注意的是,这些函数都是静态函数,不属于类或实例,直接通过operator.xxx
即可调用。
另外,这些函数都是不会改变参数本身的,而是返回一个新的值。例如:operator.add(a, b)
不会改变a
和b
的值,而是返回一个新的值。
这些运算符函数在Python编程中有着重要的作用,可以使得代码更加简洁,易于阅读和调试。同时,使用这些函数还可以实现更精细、更复杂的运算任务。