为啥我们需要python中的运算符函数?
Posted
技术标签:
【中文标题】为啥我们需要python中的运算符函数?【英文标题】:Why do we need operator functions in python?为什么我们需要python中的运算符函数? 【发布时间】:2022-01-14 16:46:32 【问题描述】:当我们几乎可以在 python 中使用 operators 时,为什么要在 python 中使用它们,例如 [/,*,-,+,,...]?
我们什么时候需要使用这些运算符函数而不是内联运算符?
【问题讨论】:
因此您可以为自定义对象使用自定义比较器。或者,您可以轻松地将操作员换成另一个操作员。很多原因。如此之多,以至于这个问题对于 IMO 的 *** 来说绝对是太宽泛了。 这是一个便利库。运算符是源代码的一部分,它提供了与运算符等效的函数。所以operator.add
与def add(x, y): return x + y
或lambda 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中的运算符函数?的主要内容,如果未能解决你的问题,请参考以下文章