2024年12月12日木曜日

Python クロージャーによるカウンタ作成

Pythonのクロージャーによるカウンタ作成

def counter():
    num = 0

    def add_one():
        nonlocal num
        result = num #JavaScriptの後置インクリメントに相当する操作で0始まりにする
        num += 1
        return result

    return add_one #関数を返す ()を付けない


counter1 = counter()

print(counter1()) #結果 0
print(counter1()) #結果 1
print(counter1()) #結果 2
print(counter1()) #結果 3

ポイント:

  • add_one()の中から外側の num を増加させること(Pythonでは nonlocal num とすることにより変数のスコープを変更)
  • return add_one  のように関数を返すこと(add_one()ではない)
  • PythonはJSのn++相当が無いので0始まりにする操作を追加
  • return文は最後に書く(returnの後で関数定義ができないため)

0 件のコメント:

コメントを投稿