Яка різниця між exec () та eval () у Python?


Відповідь 1:

Перш за все, eval є коротким для оцінки (простий вираз) .Exec - короткий для Execute (заява про код Python).

Вираз оцінюється в Python аналогічно оцінюванню математичного вираження. Python інтерпретує вираз на основі деяких правил, а потім повертає значення. У Python виразом може бути будь-яке значення, яке може бути призначене змінній. Eval приймає один вираз як вхідний, оцінює вираз згідно з правилами Python і повертає отримане значення.

Eval також дозволяє надати додатковий вхід для того, щоб заблокувати, які функції можна викликати. Важко заблокувати речі, коли ви створюєте динамічний код, тому, ймовірно, вам слід обмежити виклики, які могли б бути використані погано, лише дозволяючи доступ до тих функцій, які ви знаєте, що вам справді потрібні.

Надаючи вхід до eval, вам не потрібно давати рядок eval. Ви можете дати введення байтового коду eval, який ви тільки що склали з рядка, і він оцінить байт-код як вираз і поверне значення.

Exec не поверне вам значення повернення. Exec приймає рядок інструкцій python та виконує їх. Це завжди нічого не повертає. Але він виконує будь-який код, який може виконувати python, а не лише те, що ви можете призначити змінній. Якщо вам не байдуже значення, що повертається, то ви можете використовувати exec, оскільки все, що ви можете помістити в програму python, ви можете помістити в exec. Є багато можливостей, які можна помістити в програму python, яку ви не можете призначити змінній. Це те, що ви не можете надати як вкладення eval.