関数内で関数を定義する
入門Python3 4.7.8
タイトル通り、関数の中で関数を定義することが出来ます。
def foo(): def bar(a): print(a + 1) bar(1) foo()
$ py main.py 2
関数内で定義した関数は、関数の外では呼び出せない模様。
def foo(): def bar(a): print(a + 1) bar(1) bar(10)
$ py main.py Traceback (most recent call last): File "main.py", line 8, in <module> bar(10) NameError: name 'bar' is not defined
ただしfooの戻り値として関数オブジェクトを返せば呼び出せる。
def foo(): def bar(a): print(a + 1) return bar func = foo() func(10)
$ py main.py 11
直接barを呼び出す方法があるのかもしれないけど、ちょっと調べた感じではわかりませんでした。まぁ無理ってことですかね。