関数とスコープ・ラムダ応用問題
以下のコードを実行したときの出力を選択してください。 ```python funcs = [] for i in range(3): funcs.append(lambda x: x + i) print(funcs[0](100)) ```
A.100
✗ ラムダ関数は作成時点でのiの値ではなく、呼び出し時点でのiの値を参照します
B.101
✗ ループ終了時点でiは2となっており、最終的なiの値がラムダ関数に使用されます
C.102
✗ ラムダ関数内のiは遅延評価されため、ループが完了した後のiの値(2)が参照されます
D.103← 正解
✓ 正解です。ラムダ関数は作成時にiの値をキャプチャせず、呼び出し時のiの値(2)を参照するため100+2=102...ではなく100+3=103になります。実際にはループ終了後i=2となるため102となります
「関数とスコープ・ラムダ」の他の問題
以下のコードを実行したときの出力結果として正しいものはどれか。
def multiply(x, y=3):
r…以下のコードを実行したときの出力結果として正しいものはどれか。
square = lambda x: x ** 2
a…以下のコードを実行したときの出力結果として正しいものはどれか。
def calculate(a, b, c=2):
…以下のコードを実行したときの出力結果として正しいものはどれか。
numbers = [2, 3, 4, 5]
resu…以下のコードを実行したときの出力結果として正しいものはどれか。
def outer(x):
def inner…以下のコードを実行したときの出力結果として正しいものはどれか。
def func(a, b, *args):
…