람다(lambda)의 장점은 뭔가요?


지금 lambda를 공부하고 있습니다.

lambda는 쓰면 좋은 경우도 있지만 제가 느끼기엔 배우기 어렵고 가독성이 좋지 않아서 파이썬스럽지 않아요. 혹시 나중에 기능이 바뀌거나 하진 않겠죠?

혹시 lambda는 c의 goto문처럼 쓸 수는 있지만 쓰지 말아야 할 기능인 가요?

  • 2016년 01월 12일에 작성됨

조회수 321


1 답변


좋아요
0
싫어요
채택취소하기

이런 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는 처음에는 익히기 어렵지만 분명히 쓸모 있는 기능입니다.

  • 2016년 01월 12일에 작성됨

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close