当前位置: 首页 > 面试题库 >

在哪种情况下,应在python中使用内置的“ operator”模块?

欧阳永宁
2023-03-14
问题内容

我说的是这个模块: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?” 答案是:

  1. operator.add (我认为)稍微快一点。
  2. 它使您或以后的其他人更容易理解代码。他们不需要寻找add的定义,因为他们知道操作员模块的作用。
  3. operator.add是可腌制的,而lambda不是。这意味着该功能可以保存到磁盘或在进程之间传递。


 类似资料:
  • 问题内容: 这可能是一个琐碎的问题,但阅读ARG和ENV的文档对我而言并不清楚。 我正在构建一个PHP-FPM容器,我想提供启用/禁用某些用户需求扩展的功能。 如果可以在Dockerfile中通过添加条件并在build命令上传递标志来做到这一点,那就太好了,但不支持AFAIK。 就我而言,我的个人方法是在容器启动时运行一个小的脚本,如下所示: 这是我的样子: 如果您需要深入了解我的工作方式,那么这

  • 这可能是一个微不足道的问题,但是阅读ARG和ENV的文档并没有让我明白。 我正在构建一个PHP-FPM容器,我希望能够根据用户需要启用/禁用一些扩展。 如果可以在Dockerfile中通过在构建命令上添加条件和传递标志来实现这一点,那就太好了,但是不支持AFAIK。 在我的情况下,我个人的方法是在容器启动时运行一个小脚本,如下所示: 这就是我的的样子: 目前这是工作,但。。。如果我想添加20个(随

  • 在哪种情况下会发生这种情况?

  • 问题内容: java.lang.Math#min(double,double): 在那种情况下可以退货?NaN 似乎是在什么时候,但我无法想象一个例子。你能提供一个吗? 问题答案: 一个简单的例子是 BTW Double.compare()确实将NaN视为相等 对于多个线程,这对于任何类型和值都是可行的。例如

  • 在哪种情况下可以返回?好像是是NaN的时候,但是我想像不出一个例子。你能提供一个吗?

  • 我将guava jar文件添加到类路径中,但我的IDE(eclipse)说: Nullable无法解析为类型 但如果我ctrl+单击Nullable,我会看到蓝色下划线,然后看到下划线: