Основная причина, о которой я мог подумать, это, возможно, оптимизация.
Версия B использует ту же операцию несколько раз, а именно:
Достаточно интеллектуальный компилятор / интерпретатор мог бы обнаружить это и вычислить эти промежуточные результаты. Поступая таким образом, он сможет немедленно вычислить весь if-блок всего с двумя модификациями.
Короче говоря, я думаю, что код, который завершается выполнением, может выглядеть примерно так:
for i in range(1,10001):
a = i % 5
b = i % 3
if a == 0 and b == 0:
print('FizzBuzz')
elif b == 0:
print('Fizz')
elif a == 0:
print('Buzz')
else:
print(i)
Однако код в блоке A, возможно, слишком сложен. Под этим я подразумеваю, что компилятор всегда будет вынужден выполнять 3 операции с модами. Если только он каким-то образом не сможет определить, что 15 = 3 * 5, и использовать это logi c для переделки оператора if.