以下のその他の例:
if (a = xyz() ) > abc:
本当に理由を知りたいのですが、悪臭のようなものですか?
注:私は文法を知っていますが、Pythonが他の多くの言語(c、java ...など)がサポートしているような文法をサポートしていない理由を尋ねています
以下のその他の例:
if (a = xyz() ) > abc:
本当に理由を知りたいのですが、悪臭のようなものですか?
注:私は文法を知っていますが、Pythonが他の多くの言語(c、java ...など)がサポートしているような文法をサポートしていない理由を尋ねています
Python式での代入を許可しない理由は、これらの他の言語でよく見られる、見つけにくいバグです。これは、次の構成によって引き起こされます。
if (x = 0) { // error handling } else { // code that only works for nonzero x }
エラーは単純なタイプミスです。変数xに0を割り当てるx=0が書き込まれましたが、比較x==0は確かに意図されたものです。
FAQで説明されているように、式で割り当てを使用するためのほとんどの「ユースケース」は、代わりにイテレータを使用することでカバーできます。
Pythonの哲学を覚えておいてください:それを行うための明白な方法は1つ、できれば1つだけでなければなりません。
それは私には明白に聞こえません!
また、この答えも確認することをお勧めします:
Python代入が値を返さないのはなぜですか