Семантика формул
Ещё раз напомним, что формулы в Python (впрочем, как и в большинстве других языков) составляются из переменных, операторов и литералов. А именно, формула — это одно из трёх:
- переменная
- литерал
- оператор и последовательность (возможно, пустая) формул, называемых подформулами или операндами этого оператора
У каждой формулы есть связанная с ней процедура вычисления её значения:
- значением переменной является её текущая привязка
- значение литерала вычисляется по связанному с этим литералом правилу
- значение оператора (за редким исключением) вычисляется так: сперва слева направо вычисляются значения всех подформул, затем к этим значениям применяется правило, связанное с этим оператором
При вычислении значений некоторых формул происходят побочные эффекты, которые выражаются в каком-либо наблюдаемом во время вычисления этой формулы поведении программы.
Формально проще определить отсутствие побочных эффектов. А именно, будем говорить, что формула не имеет побочных эффектов, если вставка её в произвольные места произвольной программы, в которых входящие в неё элементы имеют смысл, не изменяет результата работы программы.
Например, формула print("Hello world!")
имеет побочный эффект
(отправка текста Hello world на стандартный выход программы),
а формула 2+3*4
побочных эффектов не имеет (если таковым эффектом
не считать нагрев окружающей среды в результате работы ЭВМ).