web-dev-qa-db-ja.com

++を使ったPython整数のインクリメント

可能な重複:
Python:インクリメント演算子とデクリメント演算子の動作

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

number++

驚いたことに、私はPythonのドキュメントでこれについて何かを見つけることができません。本当に自分自身をnumber = number + 1に服従させる必要がありますか?人々は++/--記法を使いませんか?

669
Znarkus

Pythonは++をサポートしません、しかしあなたはすることができます:

number += 1
1192

簡単に言うと、++演算子と--演算子は、 演算子 ではなく、 statements である必要があるため、Pythonには存在しません。単純さと一貫性のために、Pythonにおける名前空間の変更はすべてステートメントです。それは設計上の決定の1つです。整数は不変なので、変数を「変更」する唯一の方法はそれを再割り当てすることです。

幸い、enumerate()itertools.count()のような他の言語での++--のユースケースのための素晴らしいツールがあります。

401
Thomas Wouters

できるよ:

number += 1
44
knutin

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

C++のような言語で++が便利になる主な理由は、インデックスを追跡するためです。 Pythonでは、データを抽象的な方法で扱い、インデックスなどを介して増分することはほとんどありません。 ++に最も精通しているのは、反復子のnextメソッドです。

20
Mike Graham

あなたが使用することができます:

number += 1
20
compie

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

Pythonには実際には++と - がありません。そして私は個人的にはそれがそのような損失であるとは決して感じませんでした。

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

明確な増分セマンティクスを持つラッパークラス(アキュムレータなど)を常に定義してから、x.increment()またはx.incrementAndReturnPrev()のようなことを実行できます。

11
Uri

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

しかし、この演算子がPythonの哲学にないと、一貫性が増し、暗黙のうちに回避されます。

さらに、pythonにはイテレータパターンと関数列挙の強力な実装があるため、この種の増分はpythonコードでは広く使用されていません。

8
pygabriel