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)