python-数学运算符作为函数参数

python-数学运算符作为函数参数,python,Python,我有这段代码 def maths(operator): #different math here.. final = final + number #i want to use the operator arg here 。 后来,我想把它叫做数学(“+”)或数学(“-”),这样我就不必每次都使用同一段代码了。可能有重复的地方,但我想不起来 下面是您的操作方法--您需要使用这些运算符作为快捷方式的神奇方法 def maths(operator): mapping = {

我有这段代码

def maths(operator):
   #different math here..

   final = final + number #i want to use the operator arg here

后来,我想把它叫做数学(“+”)或数学(“-”),这样我就不必每次都使用同一段代码了。

可能有重复的地方,但我想不起来

下面是您的操作方法--您需要使用这些运算符作为快捷方式的神奇方法

def maths(operator):
    mapping = { "+": final.__add__,
                "-": final.__sub__,
                "x": final.__mul__,
                "*": final.__mul__,
                "/": final.__truediv__,
                "//": final.__floordiv__}
    return mapping[operator](number)
这是一个非常复杂的问题,但基本上,这些操作员在幕后工作的方式是调用所描述的神奇方法。您可以通过以下操作创建一个“假号码”:

class FakeNumber(object):
    def __init__(self, value=0):
        self.value = value
    def __add__(self,other):
        return self.value + other
    def __sub__(self,other):
        return self.value - other
    def __mul__(self,other):
        return self.value * other
    def __truediv__(self,other):
        return self.value / other
    def __floordir__(self,other):
        return self.value // other
现在,所有神奇的方法都已实现,您可以执行以下操作:

two = FakeNumber(2)
two * 4 # 8
two + 2 # 4
two / 2 # 1
two - 2 # 0
您正在寻找模块


它说'NameError:global name'final'未定义'@user3196332您的代码也未定义。我以为你知道什么是
final
意思:)@user3196332但是哈哈!有人发现了重复项,它的答案比我的好,因为它实现了
操作符
,它使用ABC(抽象基类)来接受两个操作符,而不是一个。那对你来说会更好。好的,我现在明白你的意思了。非常感谢。我将接受你的答复5mins@user3196332无需接受,无论如何,复制品是一个更好的答案。这道题将在5分钟内结束D
def maths(accum):
    #...
    final = accum(final, number):

x = maths(operator.mul)