私は一日の大部分を、代入ステートメントの最後にある漂遊コンマによって引き起こされたバグを見つけるのに費やしました。私のバグを見つけることの難しさは、例外をトラップしていたサードパーティのコールバックライブラリによって悪化しましたが、Python(2.x)がタプルを作成する代わりに構文エラーを発生させないのはなぜか疑問に思いました。次のことを考慮してください
>>> a = 1,
>>> a
(1,)
ご覧のとおり、末尾のコンマはシングルトンタプルを作成します。これはPythonの文法に違反しているわけではありませんが(http://docs.python.org/reference/expressions.html#grammar-token-expression_listを参照)、予期しない結果が生じる可能性があります。
>>> a == 1,
(False,)
vs
>>> (1,) == a
True
私は今何が起こっているのか理解していますが、Pythonがタプルを作成するために明示的な括弧を必要とせずにこの構文を許可する理由に戸惑っています。この振る舞いが必要な場合、または少なくとも有利な場合はありますか? 私は過去7年間、Pythonでほぼ独占的にプログラミングを行っており、この方法でシングルトンを作成する必要はありませんでした。Pythonは、ほとんどの点で、素晴らしく読みやすく、明示的な言語です。この特定の「機能」は、まあ、Pythonicではないようです。