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プログラミングの理解に役立つことを願っています。