[Python] lambda 표현식

sudog·2023년 8월 24일
1

Python

목록 보기
3/4

파이썬 내장함수 중에서는 인자로 함수를 받는 것들이 있다.
대표적으로 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) )

이렇게 바로 호출할 수도 있다.

마지막으로 람다 표현식에서는 한 줄을 넘어가거나 내부에 새로운 변수를 만드는 것이 불가능하다는 것을 기억하자.

profile
안녕하세요

0개의 댓글