파이썬 내장함수 중에서는 인자로 함수를 받는 것들이 있다.
대표적으로 map
, filter
등이 있는데, 데이터를 받아서 함수에 인자로 주고 결과를 받아 이터레이터로 만들어준다.
간단한 예제 코드를 작성해보자.
def func(a):
return a*2
arr = [1, 2, 3, 4, 5]
print(list(map(func, arr)))
위 코드는 [2, 4, 6, 8, 10]
을 출력한다.
그런데 이때 func
의 형태를 보면 매우 간단해서 한 줄로도 작성이 가능할 것 같다.
이럴 때 lambda
표현식을 사용하면 더 간단하게 함수 구현이 가능하고 가독성도 좋아진다.
이렇게 바꿔보자.
arr = [1, 2, 3, 4, 5]
print(list(map(lambda x: x*2, arr)))
같은 결과를 출력하지만 데이터를 어떻게 조작하는지 바로 확인이 가능하다.
lambda <매개변수>: <반환값>
의 구조로 만들면 된다. 여기서 매개변수는 관례적으로 x
를 사용하고 여러 개를 받는 것도 가능하다.
함수를 람다 표현식으로 변환하는 예제를 만들어보자.
def add(a, b):
return a+b
lambda x, y: x+y
하지만 이렇게 만든 함수는 다른 곳에서 사용이 불가능하다.
람다 표현식은 익명 함수를 만들기 때문에 저 함수를 호출할 이름이 없기 때문이다.
바로 사용하거나 변수에 저장해 주어야 한다.
func = lambda x, y: x+y
print(func(1, 2))
print( (lambda x, y: x+y)(1, 2) )
이렇게 바로 호출할 수도 있다.
마지막으로 람다 표현식에서는 한 줄을 넘어가거나 내부에 새로운 변수를 만드는 것이 불가능하다는 것을 기억하자.