当前位置:  开发笔记 > 编程语言 > 正文

在什么情况下应该在python中使用内置的"运算符"模块?

如何解决《在什么情况下应该在python中使用内置的"运算符"模块?》经验,为你挑选了2个好方法。

我说的是这个模块:http: //docs.python.org/library/operator.html

来自文章:

运算符模块导出一组在C中实现的函数,这些函数对应于Python的内部运算符.例如,operator.add(x,y)等价于表达式x + y.函数名称是用于特殊类方法的函数名称; 为方便起见,还提供了没有前导和尾随__的变体.

我不确定我理解这个模块的好处或目的.



1> John Fouhy..:

可能最流行的用法是operator.itemgetter.给定lst元组列表,您可以按第i个元素排序:lst.sort(key=operator.itemgetter(i))

当然,你可以通过定义自己的键功能在没有操作符的情况下做同样的事情,但操作员模块使它稍微整洁.

至于其余部分,python允许一种功能性的编程风格,因此它可以出现 - 例如,Greg的简化示例.

你可能会争辩说:"为什么operator.add我只能这样做add = lambda x, y: x+y?" 答案是:

    operator.add 是(我认为)稍快.

    它使代码更容易理解,或者让其他人稍后再去看它.他们不需要查找add的定义,因为他们知道运算符模块的作用.


@MarcoSulla我不是说operator.add(5,8)比5 + 8更快.我说我认为它比(lambda x,y:x + y)更快(5,8)
好的捕获:`$ python -m timeit"(lambda x,y:x + y)(5,8)"10000000循环,最佳3:0.127 usec每循环`$ python -m timeit -s"来自运营商导入添加""add(5,8)"`10000000循环,最佳3:0.0614 usec每循环

2> Greg Hewgill..:

一个例子是使用该reduce()功能:

>>> import operator
>>> a = [2, 3, 4, 5]
>>> reduce(lambda x, y: x + y, a)
14
>>> reduce(operator.add, a)
14

推荐阅读
惬听风吟jyy_802
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有