python - 在 Python 中间接调用内置运算符

标签 python

假设您有一个小型计算器程序,它以数字和一个运算符作为输入对这些数字执行操作,然后打印出应用指定运算的结果。因此,如果您输入“4 + 5”,它将打印出“9”。简单吧?好吧,我想写的是这样的:

a, op, b = raw_input().split()
print somehowInvokeOperator(op, a, b)

问题是“somehowInvokeOperator()”部分。有没有办法在不求助于 (a) eval() 或 (b) 某种类型的字典映射键(如“+”和“-”)到执行适当操作的函数的情况下做到这一点? getattr() 似乎不适用于此。我真的不需要这段代码来做任何事情,我只是想看看这是否可以像在其他动态语言中一样优雅地在 Python 中解决。

最佳答案

基本上不需要,您至少需要有一个字典或函数来将运算符字符映射到它们的实现。实际上比这复杂一点,因为并非所有运算符都采用 a [op] b 的形式,所以通常您需要做一些解析;见https://docs.python.org/library/operator.html有关通信的完整列表,以及您可能希望用于运算符实现的函数。

如果您只是想实现像 + - */% ** 这样的二元算术运算符,那么字典就足够了。

关于python - 在 Python 中间接调用内置运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/542987/

相关文章:

python - 为什么此类中的列表理解对某些方法有效,而对其他方法无效?

Python:将列表附加到另一个列表并清除第一个列表

python - 按日期范围对数据框进行子集化

python - 距起始顶点一定距离内的顶点数

Python:AttributeError: 'NoneType'对象没有属性 'start'

python - 在 headless 浏览器中异步打开页面(PhantomJS)

python - 使用 fft2 reshape RGB 滤镜

python - 在 MinMaxScaler 中对多个特征使用相同的最小和最大数据

python - 检查 Python 列表中是否存在键

python - 添加要在 tkinter 中显示的变量