Pythonでは、無限ループを作成するために while True と while 1 のどちらを使用するかがよく議論されます。これらの違いを理解するためには、Pythonのバージョンとその背後にあるバイトコードの違いを理解することが重要です。
Python 2.x
Python 2.xでは、Trueはキーワードではなく、組み込みのグローバル定数であり、bool型で1と定義されています。したがって、インタプリタはTrueの内容をロードする必要があります。つまり、Trueは再割り当て可能です。
>>> True = 4
>>> True
4
このため、Python 2.xでは、while 1:とwhile True:で生成されるバイトコードが異なります。特に、while 1:の方がwhile True:よりも単純で効率的なバイトコードを生成します。
Python 3.x
Python 3.xでは、Trueは実際のキーワードとなり、再割り当てすることはできません。
>>> True = 4
File "<stdin>", line 1
SyntaxError: can't assign to keyword
したがって、Python 3.xでは、while True:とwhile 1:で生成されるバイトコードは同じになります。
結論
Python 2.xとPython 3.xでは、while True:とwhile 1:の挙動が異なります。Python 2.xでは、while 1:がwhile True:よりも効率的なバイトコードを生成します。しかし、Python 3.xでは、while True:とwhile 1:は同じバイトコードを生成します。
したがって、Python 2.xで長時間実行される密なループがある場合は、while 1:を使用することを検討すると良いでしょう。一方、Python 3.xでは、ループから抜け出す条件がない場合は、while True:を使用します。
以上が、Pythonのwhile Trueとwhile 1の違いについての説明です。この情報がPythonプログラミングの理解に役立つことを願っています。