首页 > 解决方案 > 以下代码行 `eval("os.system('clear')", {})` 会做什么?

问题描述

我听说这是灾难性的。为什么?

import os
eval("os.system('clear')", {})

编辑 :

添加import os. 将代码视为几行更大的程序。所有必要的进口都已到位,等等......

标签: pythonpython-3.xoperating-system

解决方案


那条线没有做任何事情 -os.system('clear')会清除屏幕,但由于os没有导入它只是错误。

{}行的部分评估没有内置、变量或上下文的代码,因此即使您os提前导入它仍然会出错:

>>> eval("os.system('clear')", {})
NameError: name 'os' is not defined
>>> import os
>>> eval("os.system('clear')", {})
NameError: name 'os' is not defined

eval本身就很危险——eval当你不知道它会做什么或用户输入时不要运行。


推荐阅读