Приоритет оператора
idcter += 1 if (idcter <= maxid) else 0
визуализируется следующей группировкой
idcter += (1 if (idcter <= maxid) else 0)
, что означает увеличение на 0
, если условие не выполняется.
Сравните это с
idcter = idcter + 1 if (idcter <= maxid) else 0
# ==
idcter = (idcter + 1) if (idcter <= maxid) else 0
Где вы присваиваете 0
результату в том же случае.
Кстати, 10000
уже превышает maxid
из 9999
. Один типичный способ реализации такого приращения сброса использует оператор по модулю. В вашем случае:
idcter = (idcter+1) % (maxid+1) # 9997 -> 9998 -> 9999 -> 0 -> 1