람다(lambda)의 장점은 뭔가요?
조회수 6608회
지금 lambda
를 공부하고 있습니다.
lambda
는 쓰면 좋은 경우도 있지만
제가 느끼기엔 배우기 어렵고 가독성이 좋지 않아서 파이썬스럽지 않아요.
혹시 나중에 기능이 바뀌거나 하진 않겠죠?
혹시 lambda
는 c의 goto
문처럼 쓸 수는 있지만 쓰지 말아야 할 기능인 가요?
1 답변
-
이런
lambda
함수를 말하시는 건가요?f = lambda x: x**2 + 2*x - 5
말씀하신 대로
lambda
는 유용할 때가 많습니다. 또 python은functional programming
이라고 하는 프로그래밍 스타일을 지원합니다.functional programming
은 함수를 값처럼 다른 함수로 전달하는 프로그래밍 스타일 중 하나입니다.예를 들어
mult3 = filter(lambda x: x % 3 == 0, [1, 2, 3, 4, 5, 6, 7, 8, 9])
는mult3
에 [3, 6, 9]를 저장하지요. lambda를 쓰면def filterfunc(x): return x % 3 == 0 mult3 = filter(filterfunc, [1, 2, 3, 4, 5, 6, 7, 8, 9])
같이 쓰는 것 보다 더 간략하게 표현할 수 있다는 장점이 있습니다.
물론 이 경우는 다음과 같이 list로 비슷하게 표현할 수는 있지만
mult3 = [x for x in [1, 2, 3, 4, 5, 6, 7, 8, 9] if x % 3 == 0]
다른 경우, 예를 들어 list를 쓸 수 없는 경우나 아래와 같이 함수에서 return한 값을 함수로 쓰고 싶다면,
lambda
를 쓰는 게 가장 짧은 방법입니다.def transform(n): return lambda x: x + n f = transform(3) #f가 함수처럼 쓰임 f(4) # 결과는 7
lambda
는 처음에는 익히기 어렵지만 분명히 쓸모 있는 기능입니다.
댓글 입력