Возможно, первое изменится a
до того, как будет оценено второе условие if
, и поэтому будет вести себя по-разному:
if a%4 == 0:
a += 1 # this influences the result of the next IF
if a%4 != 0:
a -= 1
На самом деле, в данном конкретном случае, если первое условие истинно, то после добавления 1 к a
второе условие также будет истинным, и поэтому a
снова вычитает 1 из него.
вторая версия сначала сохраняет в b
результат, необходимый для условий для работы с исходным значением , и только затем выполняет модификацию a
, которая больше не играет роли в условиях if
. Там гарантируется, что выполняется только одно из двух if
условий.
Тем не менее, большинство просто использует else
, что устраняет эту проблему:
if a%4 == 0:
a += 1
else:
a -= 1