为啥我们需要python中的运算符函数?

Posted

技术标签:

【中文标题】为啥我们需要python中的运算符函数?【英文标题】:Why do we need operator functions in python?为什么我们需要python中的运算符函数? 【发布时间】:2022-01-14 16:46:32 【问题描述】:

当我们几乎可以在 python 中使用 operators 时,为什么要在 python 中使用它们,例如 [/,*,-,+,,...]?

我们什么时候需要使用这些运算符函数而不是内联运算符?

【问题讨论】:

因此您可以为自定义对象使用自定义比较器。或者,您可以轻松地将操作员换成另一个操作员。很多原因。如此之多,以至于这个问题对于 IMO 的 *** 来说绝对是太宽泛了。 这是一个便利库。运算符是源代码的一部分,它提供了与运算符等效的函数。所以operator.adddef add(x, y): return x + ylambda x,y: x + y 相同。这是一个常见的用例,他们创建了一个库。 "与内联运算符相反的运算符函数?" 当你需要一个函数时,当然。由于运算符不是对象,它们是源代码的特征,它们是语法的一部分。因此,您可以执行 map(operator.add, some_iterable) 之类的操作,但您不能执行 map(+, some_iterable) 之类的操作,因为语法错误(在某些语言中,通常在函数式编程语言中,运算符只是函数,但在 Python 中不是) operator.add 通常也比lambda x, y: x + y 更有效;用户自定义函数调用成本相对较高,operator 模块尝试导入扩展模块_operator 来实现这些功能。 【参考方案1】:

作为一个为什么您可能希望能够将运算符作为函数调用的示例,请考虑以下代码:

    if op == "+":
        return num1 + num2
    elif op == "-":
        return num1 - num2
    elif op == "*":
        return num1 * num2
    else:
        raise ValueError(f"invalid operator op")

使用operator 可以更轻松地编写为:

    return 
        "+": operator.add,
        "-": operator.sub,
        "*": operator.mul,
    [op](num1, num2)

【讨论】:

以上是关于为啥我们需要python中的运算符函数?的主要内容,如果未能解决你的问题,请参考以下文章

为啥虚拟析构函数需要删除运算符

python为啥叫爬虫

为啥需要 Elixir 捕获运算符来将函数绑定到值

Dan Bernstein 的 Djb2 哈希函数:当我们只能乘以 33 时,为啥还要使用按位运算符?

Python学习篇 Python中的运算符

捋一捋Python中的数学运算math库(上篇)