|
|
1
16
如果你“对学术感兴趣”,你想学习如何编写具有运算符优先级的解析器。 Simple Top-Down Parsing in Python 我强烈建议你尝试编写自己的第一个解析器——它就是那种“啊, 那是 这是如何运作的“时刻! |
|
|
2
2
另一种可能性是看 Pyparsing ,它是一个通用的解析器构建器。它比你需要的更强大,但实施起来可能更快。 |
|
|
3
2
我对Python和任何非常Python化的方法都不太熟悉,但你可以看看 Interpreter pattern ,这在四人帮的书中有定义。它是为处理“语言”而设计的,数学表达式确实遵循特定的语言规则。事实上,维基百科上的例子实际上是RPN计算器的Java实现。 |
|
4
1
这就是Python中“eval”函数的作用。
尽管它可以做更多的事情,主要是调用函数,但要小心,为了安全起见,你应该确保它不能访问本地或全局。此外,您还可以访问内置方法,包括棘手的 导入 因此,您也需要阻止对该内容的访问:
当然,由于你以这种方式阻止了所有locla变量的使用,那么你就没有任何变量可以使用,所以要使用它,你只需要传入那些应该在字典中访问的变量。
或类似。 |
|
|
5
0
此接收器为您的问题提供了正确的答案: http://code.activestate.com/recipes/496746-restricted-safe-eval/ 它允许您评估不会损害您的计算机或程序的有限语句。 |
|
|
6
0
|