Python nonlocalの使い方
概要
- 関数の中の関数を利用する際に、親関数の変数にアクセスする方法
- globalはglobal変数にアクセスするという意味であるが、nonlocalは関数の外の変数にアクセスするという意味である
- globalの替わりにはならない
具体例
OKな例
def func1():
abc = 0
def _func():
nonlocal abc
for i in range(0, 11):
abc += i
_func()
assert abc == 55
func1()
動作しない例
def func2():
abc = 0
def _func():
for i in range(0, 11):
# 親関数の変数にはアクセスできない
abc += i
_func()
print(abc)