Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/svn/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何执行作为用户输入的代码?_Python_Input - Fatal编程技术网

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
速度很慢。“格式良好的输入”在现实世界中不是一个合理的假设。把每一个输入都当作坏的,除非你能证明它是好的。正是我想要的。它不仅回答了我的问题,不仅说明了风险,而且给了我避免此类风险的想法。再次感谢!