Python- 如何将字符串运算符转换回其特殊含义?

Python- How to convert stringed operator back to its special meaning?

我正在 python3.3 中编写一个程序,它要求我计算一个字符串表达式,如 :

"2+3"

我使用

将“2”和“3”转换为数字
int("2")
int("3")

但是如何更改“+”以获得其特殊含义?

您可以将 operrator 模块与 if 语句一起使用:

>>> import operator
>>> a=3
>>> b=2
>>> s='+'
>>> if s=='+':
...  print operator.add(a,b)
... 
5

The operator module exports a set of efficient functions corresponding to the intrinsic operators of Python.

如果您确定程序的输入来自安全来源,那么您可以 eval 您的字符串,就大功告成了。

>>> eval('2+3')
5

如果您出于某种原因无法使用 eval,请尝试将运算符字符串映射到 operator 模块中相应的函数:

>>> from operator import add, sub, mul, div
>>> opmap = {'+':add, '-':sub, '*':mul, '/':div}
>>> opmap.get('+')(int('2'), int('3'))
5

如果您真的做不到这些,那么另一种方法是使用带有显式评估的 if-elif 语句,如下所示:

if op == '+':
    int(left_operand) + int(right_operand)
elif op == '-':
    int(left_operand) - int(right_operand)
# etc.

另一种方法是使用 Python 的特殊方法,如 __add__(如果你想要跨类型的灵活性,甚至可以 __radd__),并可能使用 hasattr 查看类型是否支持操作,但如果您是 Python 的初学者,我不建议尝试这种方法。