或阿呆のブログ

Pythonを好んで使っているプログラマです。Ruby,Perl,PowerShell,VBAなどでもたまに書いています。最近はスロット放浪記やってます。。

i++と++iの違い。Pythonでは++は無い。>>> i++ SyntaxError: invalid syntax

Pythonじゃ++は使えないよ〜。

Sample Code(サンプルコード)

>>> i++
SyntaxError: invalid syntax


そもそもなんだが、++を有難く思っているプログラマの神経がわからない。C系の言語ではインクリメントがどうやら重要な処理だと思われているらしく、わざわざ++なるものを用意してくれている。単に1足すだけなんだけどね・・・。記述が簡易だとか、ローレベルなところで高速だというメリットがあるんだろうが、スクリプト言語では大して重要な処理でもない。

素直に、

>>> i += 1
>>> i
1
>>> 

こう書けばいい。


そもそも(2回目)なんだが、i++と++iの違いをわかっていないプログラマが多い。

例えば、C#のサンプルコードをを見て欲しい。

Sample Code(サンプルコード)

      int i = 0;
            Debug.WriteLine(i++);
            Debug.WriteLine(i);

            i = 0;
            Debug.WriteLine(++i);
            Debug.WriteLine(i);

Result(実行結果)

0
1
1
1

つまりは、i++は値を返却した後にインクリメントするのに対して、++iはインクリメントしてから値を返す。そこが違い。そんなの覚えたくもないし、知らない人にいちいち突っ込むのも面倒くせぇわ・・・。コピペプログラマが、バグを埋め込むには良い仕様だ。switchのcaseでbreakを忘れるプログラマがバグを埋め込むのが嫌だからswitchなんて無いというPythonでは、ごく自然な実装だ。


そもそも(3回目)なんだが、i++なんていつ使う???せいぜい、forループするときに役立つくらいだろう。それとて、C#のようにイテレーターの種類が豊富でパワフルな言語には、もはや用無しの仕様なんじゃないだろうかね・・・。Pythonとて同じこと。

参考までに、C#で0~9までループを回してみる。

Sample Code(サンプルコード)

   for(int i = 0; i<10; i++)
            {
                Debug.Write(i);
            }

Result(実行結果)

0123456789

そもそも(4回目)なんだが、このsyntaxがわかりにくい!

それだったら、pythonでこう書いたほうが楽だし見やすい。

Sample Code(サンプルコード)

>>> for i in range(0,10):
	print i,

	
0 1 2 3 4 5 6 7 8 9


いろいろ踏まえて++なんて紛らわしいだけで使えない。有難がっている人の心理が理解出来ない。++が使えないと嘆いている人の心理も理解出来ない。きっと、慣れ親しんだsyntaxが恋しくなっているとかそういう話じゃないのか?


そもそも(5回目)なんだが、++ってどこがいいんだ?