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

조회수 4559회

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

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

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

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

답변을 하려면 로그인이 필요합니다.

Hashcode는 개발자들을 위한 무료 QnA 사이트입니다. 계정을 생성하셔야만 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)

ᕕ( ᐛ )ᕗ
로그인이 필요합니다

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 계정을 생성하셔야만 글을 작성하실 수 있습니다.