回答編集履歴
2
説明補足
answer
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
lambda は無名関数です。通常の関数定義にすると以下のように書いたのと同じ意味です。
|
2
|
+
|
1
3
|
```python
|
2
4
|
def make_incrementor(n):
|
3
5
|
def add(x):
|
@@ -8,7 +10,6 @@
|
|
8
10
|
print(f(1))
|
9
11
|
```
|
10
12
|
|
11
|
-
こう書いたのと同じ意味です。
|
12
13
|
f には add関数が代入されています。
|
13
14
|
add関数の引数が x なので、f(1) で add(1) を呼んだことになります。
|
14
15
|
add関数では x と n を加算しますが、加算する n は最初に呼ばれたときの 42 が記憶されています。
|
1
クロージャについて追記
answer
CHANGED
@@ -12,4 +12,6 @@
|
|
12
12
|
f には add関数が代入されています。
|
13
13
|
add関数の引数が x なので、f(1) で add(1) を呼んだことになります。
|
14
14
|
add関数では x と n を加算しますが、加算する n は最初に呼ばれたときの 42 が記憶されています。
|
15
|
-
1 + 42 で 43 になります。
|
15
|
+
1 + 42 で 43 になります。
|
16
|
+
|
17
|
+
このように、内部的に値を閉じ込めて保持しておく関数内関数をクロージャーと言います。
|