在哪种情况下,应在python中使用内置的“ operator”模块?
我说的是这个模块:http :
//docs.python.org/library/operator.html
从文章:
运算符模块导出一组用C实现的与Python的固有运算符相对应的函数。例如,operator.add(x,y)等效于表达式x +
y。函数名称是用于特殊类方法的名称;为了方便起见,还提供了不带前导和尾随__的变体。
我不确定我是否了解此模块的好处或目的。
-
可能最流行的用法是operator.itemgetter。给定一个
lst
元组列表,您可以按以下方式按ith元素排序:lst.sort(key=operator.itemgetter(i))
当然,您可以通过定义自己的键功能来在没有操作员的情况下执行相同的操作,但是操作员模块使其变得更加整洁。
至于其余部分,python允许使用一种编程的功能样式,因此它可以出现-例如,Greg的reduce示例。
您可能会争辩:“为什么我
operator.add
什么时候能做到:add = lambda x, y: x+y
?” 答案是:operator.add
(我认为)稍微快一点。- 它使您或以后的其他人更容易理解代码。他们不需要寻找add的定义,因为他们知道操作员模块的作用。
operator.add
是可腌制的,而lambda
不是。这意味着该功能可以保存到磁盘或在进程之间传递。