Python:如何使用字典将运算符的字符串表示形式分配给数学运算符?

Posted

技术标签:

【中文标题】Python:如何使用字典将运算符的字符串表示形式分配给数学运算符?【英文标题】:Python: How can I assign string representations of operators to mathematical operators using a dictionary? 【发布时间】:2021-01-08 19:06:20 【问题描述】:

我的目标是创建一个执行简单算术的 UDF。我希望该函数采用 2 个值,然后是运算符的字符串表示形式,例如“乘数”并在 x 到 y 上执行运算符。这是我第一次尝试,请原谅混乱。

def_myArithmetic(x, y, op):
     op='multiply': *, 'divide': /, 'add': +, 'subtract':-
     **some loop**
         **return calculation**

到目前为止我所管理的

import operator
def do_arithmetic(x, y, op):
  op='multiply': operator.multiply,'divide': operator.divide,'add': operator.add ,'subtract': operator.subtract
  for i in range(x,y):
     print (x, y)

使用这组代码在调用函数时会返回错误。

我知道这本词典不起作用。我相信这与在一个参考中拥有多个键有关吗?

我相信我在正确的行附近的某个地方,但显然不知道如何写这个。当我尝试实施我选择的规则时,有一些东西可以参考会很有帮助。

感谢您的反馈

【问题讨论】:

使用operator 模块。 operator.addoperator.mul 我可以要求一个 UDF 中的示例吗? 'multiply': operator.mul, ... 你的字典是正确的方法,你只需要使用那些函数作为值。 这很有帮助,谢谢 Barmar 【参考方案1】:

您的字典变量正在替换 op 参数。为此使用不同的名称。

您需要使用字符串参数作为键来访问相应的字典元素。

你需要调用操作符函数,而不仅仅是把它和参数放在一个元组中。

for 循环没有任何理由。

没有operator.multiply,是operator.mul。查找完整列表 here。

def do_arithmetic(x, y, op):
    operations = 
        'multiply': operator.mul,
        'divide': operator.truediv,
        'add': operator.add,
        'subtract': operator.sub
    
    return operations[op](x, y)

【讨论】:

这非常有用,非常感谢 Barmar!。我才 4 天前才开始编码。这已经将大量阅读付诸实践。

以上是关于Python:如何使用字典将运算符的字符串表示形式分配给数学运算符?的主要内容,如果未能解决你的问题,请参考以下文章

Dictionary(字典)

18python基础学习-字典

pythopn Dictionary(字典)

python基础语法 - 字典

字典的一些操作

python 字典 dictionary