Широко известно, что использование eval()
является потенциальным риском для безопасности, поэтому поощряется использование ast.literal_eval(node_or_string)
Однако в python 2.7 он возвращает ValueError: malformed string
при запуске этого примера:
>>> ast.literal_eval("4 + 9")
В то время как в python 3.3 этот пример работает так, как ожидалось:
>>> ast.literal_eval('4+9')
13
Почему он запускается на python 3, а не на python 2? Как я могу исправить его в python 2.7 без использования рискованной функции eval()
?