Как работают compile(), exec() и eval()?

Senior
213 просмотров
AFK Offer AI

compile(source, filename, mode) — компилирует строку в code object. mode: "exec" — statements, "eval" — expression, "single" — interactive. eval("2 + 2") — вычисляет выражение, возвращает результат. eval() — только expressions (нет if, for, def). exec("x = 42") — выполняет statements, ничего не возвращает. Опасность: eval/exec с пользовательским вводом — code injection! Ограничение: eval(expr, {"__builtins__": {}}, safe_dict) — но НЕ безопасно полностью. Альтернативы: ast.literal_eval() — безопасно для литералов. Используй eval/exec только для внутренних инструментов, не для пользовательского ввода.

Следующий вопрос

Что такое DTO (Data Transfer Object)?