923

VB6の日々を振り返り、「二重のプラス記号でインクリメントできない現代語は何ですか?」と思ったとき、私はいつも自分自身に笑いました。

number++

驚いたことに、Pythonのドキュメントではこれについて何も見つかりません。私は本当に自分自身を服従させなければなりませんnumber = number + 1か?人々は++/--表記を使用しませんか?

4

7 に答える 7

1616

Pythonはをサポートしていません++が、次のことができます。

number += 1
于 2010-04-13T19:46:57.307 に答える
509

簡単に言えば、++and--演算子は Python には存在しません。なぜなら、それらはoperatorではなく、 statementでなければならないからです。Python でのすべての名前空間の変更は、簡潔さと一貫性のためにステートメントです。それは設計上の決定事項の 1 つです。また、整数は不変であるため、変数を「変更」する唯一の方法は、変数を再割り当てすることです。

++幸いなことに、や など--、他の言語で や を使用するための素晴らしいツールがenumerate()ありitertools.count()ます。

于 2010-04-13T20:12:36.777 に答える
59

できるよ:

number += 1
于 2010-04-13T19:47:16.740 に答える
35

はい。演算子は++Pythonでは使用できません。Guidoはこれらの演算子が好きではありません。

于 2010-04-13T19:47:03.973 に答える
25

C ライクな言語で ++ が便利な主な理由は、インデックスを追跡するためです。Python では、抽象的な方法でデータを処理し、インデックスなどを通じてインクリメントすることはめったにありません。精神的に最も近いのはイテレータ++のメソッドです。next

于 2010-04-13T20:12:49.943 に答える
12

これが機能しない理由の説明については、Pythonのインクリメント演算子とデクリメント演算子の動作を参照してください。

Pythonには実際には++と-がありません。個人的には、これほどの損失だとは感じませんでした。

私は、常に明確ではないセマンティクスを持つ演算子よりも、明確な名前を持つ関数を好みます(したがって、++xとx++に関する古典的なインタビューの質問と、それをオーバーロードすることの難しさ)。私はまた、ポストインクリメントが読みやすさのために何をするかについての大ファンではありませんでした。

明確なインクリメントセマンティクスを使用してラッパークラス(アキュムレータなど)をいつでも定義してから、x.increment()やx.incrementAndReturnPrev()などを実行できます。

于 2010-04-13T19:48:17.130 に答える
9

ここに説明があります: http://bytes.com/topic/python/answers/444733-why-there-no-post-pre-increment-operator-python

ただし、この演算子がないことは、Python の哲学にあり、一貫性が向上し、暗黙性が回避されます。

さらに、この種のインクリメントは、python コードでは広く使用されていません。これは、python が反復子パターンと列挙関数の強力な実装を備えているためです。

于 2010-04-13T19:53:31.677 に答える