Python 如何执行作为用户输入的代码?
是否有一种方法可以实际获取格式良好的输入,并在适当的时间执行 比如:Python 如何执行作为用户输入的代码?,python,input,Python,Input,是否有一种方法可以实际获取格式良好的输入,并在适当的时间执行 比如: num = 5 command = input() # do something with command 现在,如果我输入“print(num)”作为输入,它应该会输出 5 您的建议实际上是: >>> x=1 >>> eval(input()) print(x) 1 您可以查看的另一个方法是方法(上面是eval的详细描述) 不过,这可能是个坏主意,这取决于你打算做什么。查看限制环境的
num = 5
command = input()
# do something with command
现在,如果我输入“print(num)”
作为输入,它应该会输出
5
您的建议实际上是:
>>> x=1
>>> eval(input())
print(x)
1
您可以查看的另一个方法是方法(上面是eval的详细描述)
不过,这可能是个坏主意,这取决于你打算做什么。查看限制环境的
本地
和全局
参数。对于java,有beanshell:它允许解释java源代码。在有人输入格式化硬盘的程序或安装键盘记录器之前,这一切都很有趣。所有操作都以特权运行。对eval
或exec
的输入不仅必须正确格式化,而且必须来自可靠来源<代码>评估和执行
通常应该避免,因为它们可能会带来安全风险。有关详细信息,请参见SO资深内德·巴奇尔德。还要注意的是eval
/exec
速度很慢。“格式良好的输入”在现实世界中不是一个合理的假设。把每一个输入都当作坏的,除非你能证明它是好的。正是我想要的。它不仅回答了我的问题,不仅说明了风险,而且给了我避免此类风险的想法。再次感谢!