Что будет делать следующая строка кода `eval (" os.system ('clear') ", {})`? - PullRequest
0 голосов
/ 25 октября 2019

Я слышал, что это ужасно. Почему?

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

РЕДАКТИРОВАТЬ:

Добавлено import os. Думайте о коде как о нескольких строках более крупной программы. Весь необходимый импорт на месте, и т.д ....

1 Ответ

0 голосов
/ 25 октября 2019

Эта строка ничего не делает - 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, когда вы не знаете, что он будет делать, или при вводе пользователем.

...