web-dev-qa-db-ja.com

「+ =」と「= +」の違いは?

したがって、整数1〜10を出力する簡単なコードがあります。

i = 0
while i < 10:
        i += 1
        print(i)

次に、3行目で1つの演算子を変更するだけで、1個の整数を無限に出力します(これがなぜそうなるのか理解しています)。この2番目のプログラムの実行時に構文エラーが発生しないのはなぜですか?代入演算子の後に追加演算子が続く場合、構文エラーを呼び出しませんか?

i = 0
while i < 10:
        i =+ 1
        print(i)
8
faceless

_i+=1_は_i=i+1_と同じですが、_i=+1_はi=(+1)を意味するだけです。

28
Kittsil

トークナイザーは通常、曖昧さを取り除く必要がない限りスペースを必要としません(たとえば、スペースを必要とするか、キーワードを認識できるように変数名と言語キーワードの間に何らかの句読点が必要です)。

したがって、_x=+y_、_x =+ y_、および_x = +y_はすべて同等です。すべての場合、yで単項_+_演算子を呼び出し、xに割り当てます。単項プラス演算子は一般的には使用されませんが、珍しいからといって、認識および受け入れられないわけではありません。

比較のために、C/C++などの_-->_「演算子」は スペースを探している人間とそれらを無視するトークナイザーが混乱を引き起こす別の例 です。

5
ShadowRanger

i =+ 1i = +1またはi = 1と同じです。

3
Ned Batchelder

_x=+1_はx=(+1)として扱われます
while _x+=1_は次のように扱われます:_x=x+1_

左側のオペランドと右側のオペランドを操作する二項演算子があります(例:*乗算)。
また、右側のオペランドのみをとる単項演算子があります(例:〜/!否定)。単項および二項演算子を使用できます。

pythonのプラス記号は、マイナスと同様に右辺演算子としても使用できます。

Pythonドキュメント:

単項-(マイナス)演算子は、数値引数の否定を生成します。

単項+(プラス)演算子は、数値引数を変更せずに生成します。

1
Mercury

式_i =+ 1_はi = (+1)と同じであり、_+1_は完全に正当であるため、構文エラーはありません。これは単項演算子であり、加算演算子ではありません。

0