VB6の日々を振り返り、「二重のプラス記号でインクリメントできない現代語は何ですか?」と思ったとき、私はいつも自分自身に笑いました。
number++
驚いたことに、Pythonのドキュメントではこれについて何も見つかりません。私は本当に自分自身を服従させなければなりませんnumber = number + 1
か?人々は++
/--
表記を使用しませんか?
Pythonはをサポートしていません++
が、次のことができます。
number += 1
簡単に言えば、++
and--
演算子は Python には存在しません。なぜなら、それらはoperatorではなく、 statementでなければならないからです。Python でのすべての名前空間の変更は、簡潔さと一貫性のためにステートメントです。それは設計上の決定事項の 1 つです。また、整数は不変であるため、変数を「変更」する唯一の方法は、変数を再割り当てすることです。
++
幸いなことに、や など--
、他の言語で や を使用するための素晴らしいツールがenumerate()
ありitertools.count()
ます。
できるよ:
number += 1
はい。演算子は++
Pythonでは使用できません。Guidoはこれらの演算子が好きではありません。
C ライクな言語で ++ が便利な主な理由は、インデックスを追跡するためです。Python では、抽象的な方法でデータを処理し、インデックスなどを通じてインクリメントすることはめったにありません。精神的に最も近いのはイテレータ++
のメソッドです。next
これが機能しない理由の説明については、Pythonのインクリメント演算子とデクリメント演算子の動作を参照してください。
Pythonには実際には++と-がありません。個人的には、これほどの損失だとは感じませんでした。
私は、常に明確ではないセマンティクスを持つ演算子よりも、明確な名前を持つ関数を好みます(したがって、++xとx++に関する古典的なインタビューの質問と、それをオーバーロードすることの難しさ)。私はまた、ポストインクリメントが読みやすさのために何をするかについての大ファンではありませんでした。
明確なインクリメントセマンティクスを使用してラッパークラス(アキュムレータなど)をいつでも定義してから、x.increment()やx.incrementAndReturnPrev()などを実行できます。
ここに説明があります: http://bytes.com/topic/python/answers/444733-why-there-no-post-pre-increment-operator-python
ただし、この演算子がないことは、Python の哲学にあり、一貫性が向上し、暗黙性が回避されます。
さらに、この種のインクリメントは、python コードでは広く使用されていません。これは、python が反復子パターンと列挙関数の強力な実装を備えているためです。