Categories: Python

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

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

ゆうまる

独学でプログラミングを勉強しているおじさん。いろんな言語を勉強したが浅く広くなためあまり仕事につながらない。また忘れっぽいため自分のブログを備忘録としても使っている。産まれてこのかたずっとネコを飼ってる生粋のネコ派。最近お腹が出てきて筋トレに奮闘中!

Recent Posts

【Dart】コンストラクタのデフォルト引数について

Dartのコンストラクタのデフォルト引数…

2週間 ago

【Unity】有料アセットを無料で手に入れる方法

この記事では、Unityの有料アセットを…

4か月 ago

【Python】任意の秒数だけ処理を一時停止する方法【sleep()関数】

この記事では、Pythonで任意の秒数だ…

1年 ago

【Python】Wordの文書の新規作成と読み書き

この記事では、Pythonを使ってWor…

1年 ago

【Python】メタクラスって結局なんなの?

この記事では、Pythonのメタクラスに…

1年 ago