LoginSignup
8

More than 5 years have passed since last update.

インクリメント、デクリメント演算子のないPythonの話。

Last updated at Posted at 2017-01-11

CとかJavaのコードと並行する形でPythonを書いているとインクリメントやデクリメントにi++やi--のように演算子を書きたくなってしまうことがついつい…。

しかし、やってみればわかることですがこれだとエラーが出てしまいます。

>>> i=1  
>>> i++
SyntaxError: invalid syntax

"++"や"--"のような演算子がPythonには実装されていない理由に関しては諸説あるようですが、Pythonの生みの親であり慈悲深き終身独裁者である元GoogleエンジニアのGuido van Rossum氏がPythonは"+"や"-"に複雑な意味を与えずに書き手にも読み手にも理解しやすいものにしたかったというのがあるそうです。

ちなみにですが、RubyやScalaといった言語にもこれらの演算子はないです。こちらも"ない"理由は様々なようですが…。

なにはともあれ前置と後置がきっかけで生まれるエラーを心配せずに済むので個人的にはありがたい仕様だと思っています。

Pythonでは次のように書けば問題ありません。

>>> i+=1 # インクリメント  
>>> print(i)  
2  
>>> i-=1 # デクリメント  
>>> print(i)  
1  

またよく使うfor文に関しては

>>> for(int i=0; i<10; i++)

ではなく

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

と書けばいいわけです。

ちなみに普段見かけることはありませんが補数を利用すれば次のように書くこともできます。書こうと思えば…ですが。

>>> i=-~1
>>> print(i)
2

おまけとして、文字のインクリメント(?)は次のように書けます。

>>> print(chr(ord('a')+1))
b

 参考

LINUX 修験道-PYTHON のインクリメント!
Why are there no ++ and --​ operators in Python?
週末京都-文字のインクリメント

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
8