프로그래밍 & IT 정보/Python

파이썬 함수(def)와 람다(lambda) 문법 및 차이점 비교

아미넴 2020. 11. 14.
반응형

목차

    함수

    일단 예를 하나 들어 볼게요.

    def add(x, y):
        return x + y
    print(add(3,5))
    
    #출력결과 >> 8

    함수는 def 키워드로 작성을 합니다.

    add는 함수의 이름이고, 전달 받을 인자를 x, y로 정의하였습니다.

    두 값을 더한 결과를 return해 주는 기능을 하고 있습니다.

    이렇게 만든 add 함수에 3과 5를 인자로 전달하였더니

    8이라는 결과가 나오는 것을 볼 수 있습니다.

     

    람다

    위의 함수와 같은 기능을 만들어 보겠습니다.

    add = lambda x,y: x+y
    print(add(2,3))
    
    #출력결과 >> 5

    lambda라는 키워드를 이용하여 x, y를 인자로 받고

    두 값을 더한 결과를 return하는 기능을 합니다.

    람다는 기본적으로 이름이 없는 함수를 만듭니다.

    그리고 한 줄로 좀 더 간결하게 쓸 수 있습니다.

    또한 return 키워드를 사용하지 않습니다.

    변수에 대입하여 함수와 동일하게 사용할 수도 있습니다.

     

    활용 비교

    이해를 돕기 위해 다른 사용 예를 한 번 보겠습니다.

    temp = [1,2,3,4,5]
    result = list(filter(lambda x:x>2, temp))
    print(result)
    
    #출력결과 >> [3,4,5]

    filter 메서드를 이용하여 원소를 1~5까지 갖는 배열에서 2보다 큰 값만 골라내는 예제입니다.

    lambda는 값을 전달 받아 2보다 큰 지 판단하여 참(True), 거짓(False) Boolean 값을 return하는 기능을 합니다.

    filter 메서드 첫번째 인자에 람다, 두번째 인자에 배열을 대입 합니다.

    배열을 순회하며 2보다 크면 값을 유지하고 그렇지 않으면 제외하여 결과를 만듭니다.

    filter로 얻은 결과를 list 메서드로 배열 형태를 만들어 result 변수에 저장하였습니다.

     

    함수로 완전히 동일한 기능을 만들어 보겠습니다.

    temp = [1,2,3,4,5]
    def comp(x):
        return x > 2
    result = list(filter(comp, temp))
    print(result)
    
    #출력결과 >> [3,4,5]

    어떤 방식으로 구현하든 상관은 없지만 이 예제 같은 경우에는 람다가 조금 더 간결하죠?

    실제로 type을 찍어 보면 def, lambda로 구현한 것 모두 function으로 같게 나옵니다.

    따라서 람다가 함수 안에 포함된다는 개념으로 생각해도 될 것 같습니다.

     

    결론은 def 키워드는 재사용이 필요한 함수를 만들 때 사용하고,

    간단한 일회성 함수를 만들고 싶을 때는 lambda를 사용하는 편이 좋을 것 같습니다.

    반응형

    댓글

    💲 추천 글