본문 바로가기

Python

[Python] 파이썬 람다 표현식(lambda expression)

반응형

람다 표현식 (lambda expression)

람다 표현식은 함수의 기능을 런타임에 생성해서 사용할 수 있는 익명 함수입니다. 보통 함수는 def 라는 키워드를 통해서 기능을 정의하고 여러 코드에서 해당 함수를 호출하여 사용할 수 있지만 람다 표현식은 한번 쓰고 버리는 일시적인 함수 입니다. 람다 표현식은 함수를 간편하게 작성할 수 있어서 다른 함수의 인수로 넣을 때 주로 사용합니다.

 

람다 표현식의 형식

람다는 다음과 같은 형태로 만듭니다.

lambda 인자리스트: 표현식

만약 다음과 같은 함수가 있다고 해봅시다.

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

 

이를 람다식으로 표현하면 아래와 같습니다.

>>> lambda x, y : x+y 
<function <lambda> at 0x00A2A588> 

 

하지만 위 상태에서는 람다 표현식을 호출할 수 있는 방법이 없습니다. 왜냐하면 람다는 함수명이 없는 익명함수이기 떄문입니다. 즉 이름이 없기에 호출이 불가능한 것이지요. 그래서 변수를 선언해서 호출해야 합니다.

>>> sum = lambda x, y : x+y 
>>> sum(10, 20) 
30 

 

위의 람다식은 인자로 x, y를 받고 이를 x+y 처리하라라는 기능을 가지고 있습니다. 

람다 표현식 자체를 호출하기

람다 표현식을 변수에 할당하는 방법외에 람다식 자체를 호출하는 방법도 있습니다.

(lambda 인자리스트: 표현식)(인자들)

>>> (lambda x, y : x+y) (10,20) 
30 



람다 표현식을 함수 인자로 전달하기

람다 표현식을 주로 사용하는 이유 중 하나는 바로 함수를 매개변수로 가지는 함수에 간단하게 인자로 넘기기 위해서입니다. 대표적으로 함수를 매개변수를 가지는 함수는 map과 filter라는 함수가 있습니다. 그럼 실제 예제를 통해 살펴보도록 하겠습니다.

map 함수 사용하기

map(함수, 리스트)
map함수는 리스트의 요소를 인자로 넣은 함수에 넣어 새로운 리스트를 리턴해주는 표준함수입니다.

>>> def power(n): 
...     return n*n 
... 
>>> new_list = map(power,[1,2,3,4,5]) 
>>> list(new_list)
[1, 4, 9, 16, 25]

 

이를 람다식으로 표현하면 아래와 같이 표현할 수 있습니다.

>>> new_list = map(lambda x:x*x,[1,2,3,4,5]) 
>>> list(new_list) 
[1, 4, 9, 16, 25] ​

코드가 굉장히 깔끔해진것을 확인하실 수 있습니다. 이 처럼 람다 표현식은 함수의 인자로 함수의 기능을 넘겨줄 때 유용하게 사용할 수 있는 기능입니다.

반응형