Python PR

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

記事内に商品プロモーションを含む場合があります

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

インクリメントとは数値を1増やすことで、デクリメントとは数値を1減らすことを言います。これらの演算はなにかしらをカウントする際によく使用されます。

多くのプログラミング言語にはインクリメントやデクリメントを計算するための共通の演算子(++、--)が用意されていますがPythonには実装されていません。

なので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:

    count: int = 0

    # インクリメント
    def increment(self) -> int:
        counter.count += 1
        return counter.count

    # デクリメント
    def decrement(self) -> int:
        counter.count -= 1
        return counter.count
    
# インスタンス化
count = counter()
inc, dec = count.increment, count.decrement

val = inc()
print(val)  # 1

val = dec()
print(val)  # 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

クロージャについて知りたい方は以下の記事を参照してください。

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

まとめ

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

Pythonにはインクリメントとデクリメント用の演算子は用意されていませんでしたが、代入演算子を使うことで簡単に同じような処理を実装することができました。

それでは今回の内容はここまでです。ではまたどこかで〜( ・∀・)ノ