Python

【Python】インクリメント・デクリメントをする方法

この記事では、Pythonでインクリメント・デクリメントする方法を解説します。

インクリメントとは、数値に1足すことを言います。逆に1減らすことをデクリメントと言う。Pythonでは、++--演算子が使用できません。

なので、代入演算子を使ってインクリメントやデクリメントを代用しましょう!

インクリメント

インクリメントするには、代入演算子の+=を使うことで1行で表現することができます。

inc = 0

inc += 1
print(inc)

inc += 1
print(inc)

実行結果

1
2

デクリメント

デクリメントするには、代入演算子-=を使います。

dec = 0

dec -= 1
print(dec)

dec -= 1
print(dec)

実行結果

-1
-2

クラスを使う

クラス変数に演算結果を保持させたクラスを定義してインスタンスのメソッドをそれぞれ変数に代入することで同じカウント変数を共有する関数のように扱うことができます。

class counter:

    value = 0

    def up(self):
        self.value = self.value + 1

    def down(self):
        self.value = self.value - 1


count = counter()
inc, dec = count.up, count.down

inc()
print(count.value)  # 1

dec()
print(count.value)  # 0

クロージャを使う

クロージャを使うことでその関数を呼び出すたびに値をインクリメント・デクリメントさせるカウンターを作成することができます。

インクリメント

def inc():
    count = 0
    def inner_func():
        nonlocal count
        count += 1
        return count
    return inner_func

i = inc()

print(i())
print(i())
print(i())

実行結果

1
2
3

デクリメント

def dec():
    count = 0
    def inner_func():
        nonlocal count
        count -= 1
        return count
    return inner_func

i = dec()

print(i())
print(i())
print(i())

実行結果

-1
-2
-3

関数内の関数【内部関数とクロージャ】