>>584
変数のスコープを理解すれば謎挙動でもない

for i in range(5)
__pass
print(x) // xは4

FAQにも出てるけど変数のスコープについて詳しく解説されてる入門書を1冊読むといいと思う
クラス変数とインスタンス変数のごっちゃに比べれば理解しやすい