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 件のコメント:
コメントを投稿