lambda 함수

2021년 10월 05일
JavaScript를 많이 하다보니까 익명 함수가 너무 편해졌다.
그래서 다른 언어에도 익명 함수와 같은 코드 축약이 가능한지에 대해 관심이 생겨 포스팅하게 되었다.
 
def add(a, b): return a + b add(10, 14) # 24
 
Python에서 함수를 사용하기 위해서는 위와 같은 형태로 함수를 선언 후 사용해야 한다.
 
하지만 map, reduce, filter 등에 사용될 일회성 함수를 일일히 선언하는 것은 매우 번거로운 일이 아닐 수 없다.
이럴 때 사용하는 것이 바로 lambda 함수이다.
 
(lambda a, b: a + b) # <function <lambda> at 0x7f8efed24280> (lambda a, b: a + b)(10, 14) # 24
 
lambda 함수는 위와 같은 형태로 선언할 수 있는데, lambda 키워드와 인자, 함수의 기능 순서대로 들어간다.
첫 번째 줄과 같이 lambda 함수를 선언하면 익명의 함수가 생성되어 메모리에 적재된다.
그후 두 번째 줄과 같이 인자를 주어 실행하게 되면 함수가 실행되어 나오는 return 값을 반환 받게 되는 방식이다.
 
arr = [1, 2, 3, 4, 5] def multiple(x): return x * x result = list(map(multiple, arr)) print(result) # [1, 4, 9, 16, 25]
 
lambda 함수를 쓰지 않는다면 위와 같이 multiple 함수를 선언한 후에 map 함수의 파라메터로 넘겨야한다.
하지만 만약 multitple 함수가 일회성으로 선언될 경우에는 굳이 선언할 필요 없이
 
arr = [1, 2, 3, 4, 5] test = list(map(lambda x: x * x, arr)) print(test) # [1, 4, 9, 16, 25]
 
위 처럼 lambda 함수로 처리가 가능하다.