배수를 만드는 함수 여러 개를 반복문으로 리스트에 담았는데요, 각자 2배·3배·4배가 될 줄 알았는데 전부 마지막 값으로만 계산돼요.


funcs = []
for n in [2, 3, 4]:
funcs.append(lambda x: x * n)

print(funcs[0](10))
print(funcs[1](10))


40
40


funcs[0]은 20(2배), funcs[1]은 30(3배)이 나와야 하는데 전부 40이에요. 클로저가 n을 값이 아니라 변수 자체로 잡아서 그렇다는 말도 있던데, 정확히 왜 이렇고 각자 다른 배수를 갖게 하려면 어떻게 하나요?