Python использует простое правило: если внутри функции есть присваивание, то переменная считается локальной. Именно поэтому при сравнении используется глобальная переменная, а в случае уменьшения на единицу интерпретатор рассматривает переменную как локальную и не находит ее инициализации.