동산로의 블로그
람다 함수 Lambda function 본문
람다 함수
람다 함수는 함수 리터럴(function literal), 익명함수(anonymous function)라고도 불립니다. def
로 정의된 일반 함수와 달린, 람다 함수는 한 줄로 간결하게 정의할 수 있기에 즉석에서 함수를 만들어 사용할 때 유용합니다.
람다 함수의 선언
보통 함수를 정의할 때는 다음과 같이 def
을 사용합니다.
def func(param1, param2):
return param` + param2
람다 함수를 사용하면 같은 기능을 다음처럼 한 줄로 표현할 수 있습니다.
lambda param1, param2: param1 + parma2
여기서 lambda
는 python의 내장 키워드(keyword)이며, :
앞에는 인자들, :
뒤에는 리턴값(표현식)을 적습니다.
람다함수의 다양한 사용법
람다 함수는 리스트 내에서도 정의 가능합니다.
li = [lambda arg=x: arg * 10 for x in range(1,5)]
for f in li:
print(f())
여기서 arg=x
는 기본 인자로 현재의 x
값을 기억하게 합니다.
람다 함수 안에서도 삼항 연산자 형식으로 if-else
조건을 사용할 수 있습니다.
check =labmda x: "even" if x % 2 == 0 else "odd"
print(check(3))
함수를 인자로 받는 map, filter, reduce 와 같은 함수들과 함께 자주 사용됩니다.
n = [1,2,3,4,5,6]
even = filter(lambda x: x% 2 == 0 , n)
print(list(even))
a =[1,2,3,4]
b = map(lambda x : x * 2 ,a)
print(list(b))
요약
이름이 없는 함수로 일회성 사용에 적합합니다.
표현식 한 줄로 작성되며 return
키워드를 사용하지 않습니다.
보통 다른 함수의 인자로 전달할 때 유용합니다.
조건 표현식과 기본 인자 사용이 가능합니다.
복잡한 로직에는 부적합하고, 간단한 연산에 적합합니다.