파이썬을 잘 다루시는 분들의 코드를 보면 lambda가 자주 보인다. 이걸 처음 봤을때 뭔가 복잡해보이고 한 눈에 이해하기가 어려웠서 많이 당황한 기억이 있다. 근데..사실 지금도 그렇다.. 그래서 오늘은 이 람다를 정확히 이해해보고자 한다.

람다(lambda)?

  • 람다는 함수를 간단하게 표현해주는 역할을 한다.
  • 람다는 이름없는 함수이기에 “익명 함수”라고도 불린다.
  • 람다는 식으로 표현되기 때문에 람다 표현식이라고도 부른다.
  • 간단히 함수를 표현할 수 있기 때문에 다른 함수의 인수로 넣을때 유용하게 쓰인다.

람다로 함수 만들기

기본적으로 파이썬 함수는 def를 이용해서 만든다. 간단하게 x, y를 더하는 함수를 만들어보겠다.

def plus(x,y):
    return x+y

plus(10,20)
# 30

같은 함수를 lambda로 표현하면 다음과 같다.
람다로 함수를 만들기 위해서는 lambda뒤에 넣고싶은 인자들을 넣어주고, :을 붙인 후 식을 적어준다.

lambda x,y:x+y
# <function __main__.<lambda>(x, y)>

람다를 이용하면 기본적으로 다음과 같이 람다 객체가 생성된다. 이 객체를 다시 부르기 위해서는 객체를 변수에 저장해주면 된다. 혹은 괄호를 이용해서 표현식 자체를 곧바로 호출해도 된다.

plus = lambda x,y:x+y
plus(10,20)
# 30

(lambda x,y:x+y)(10,20)
# 30
  • 주의 : 람다 안에서는 변수를 만들어 쓸 수 없다. 주어진 인자와 이미 선언된 변수만을 활용해서 반환값을 내야한다.

다음에는 람다를 인수로 하여 map, reduce등에 활용하는 방법에 대해 다뤄보겠다.

참고