teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

説明補足

2019/12/22 10:52

投稿

shiracamus
shiracamus

スコア5406

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

クロージャについて追記

2019/12/22 10:52

投稿

shiracamus
shiracamus

スコア5406

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
+ このように、内部的に値を閉じ込めて保持しておく関数内関数をクロージャーと言います。