wiki:PythonIntroPlusPlus

Version 3 (modified by sgk, 13 years ago) (diff)

--

Python: ++が無い

↑「Python情報」

C言語と、C言語から影響を受けた言語には必ず存在する演算子「++」と「--」。 Pythonには、なぜか存在しません。これはちょっと悲しい。 CとかC++では多用するのに。

++」や「--」を変数の前に置く場合と、変数の後に置く場合とでちょっと意味が違う。 前に置いた場合は、先に変数の中身を変更してから、その値が使われる。 後ろに置いた場合は、変数の値を使用してから、中身だけを変更する。

きっと、Pythonでは、そういうややこしいルールが嫌われたのでしょう。「Python的ではない」と。 ちなみに、「Python的」とは英語で「Pythonic」と言います。ちょっと宗教っぽい言葉かもしれません。

C言語での「++」や「--」がそういうややこしいルールになったのは、 ポインタの使い勝手のためだったのだろうと推測します。 PDP-11の機械語にそういう処理があったからということも言われています。 つまり、「*p++」と書いて「ポインタが現在指している場所のデータを返しながら、ポインタを次に進める」 ことができるのは、非常に合理的だったのです。

Pythonにはポインタがありません。 ポインタが無いのであれば、上記のようなややこしいルールは無意味だし、むしろ有害だ。 Pythonを作った人はそんな風に考えたのでしょう。 ただし、もちろん「+=」「-=」はあります。 「++」や「--」を使いたいような場面では、「+= 1」「-= 1」を使ってください。

でもやっぱり、正直言えば、

i++;

と書けたのが、

i += 1

と書かなきゃいけないのが、ちょっとダルい。

--sgk