익명 함수(lambda function)란 말 그대로 이름이 없는 함수이며 파이썬에서는 lambda 라는 키워드로 익명 함수를 정의할 수 있다. 주로 비교적 간단한 기능의 함수가 컨테이너의 요소로 들어가는 경우 혹은 다른 함수의 인자로 함수를 넘겨줄 필요가 있을 때 사용된다.
익명 함수는 다음과 같이 생성된다.
lambda 인자1,인자2, … : 표현식 |
익명 함수는 보통 한 줄로 정의된다. return문도 없으며 단지 인자들과 반환값들의 관계식으로만 표현된다. 예를 들어 두 수의 합을 반환하는 익명 함수는 다음과 같다.
>>> add = lambda a, b : a+b>>> add(1,2)3 |
이 익명 함수는 다음과 같이 일반 함수를 정의하는 것과 동일하다.
>>> def add(a, b) :….. return a+b>>> add(1,2)3 |
그렇다면 일반 함수와 익명 함수와의 차이점은 무엇인가? 익명 함수의 기능은 일반 함수보다도 훨씬 제한적이고 익명 함수로 할 수 있는 것은 일반 함수로도 모두 할 수 있다. 그렇다면 왜 익명 함수를 사용할까?
때로는 굳이 번거롭게 일반 함수를 정의할 필요가 없는 간단한 기능만을 구현해도 되는 경우가 있다. 예를 들어서 입력 인수가 0보다 크면 True를 반환하는 함수를 생각해 보자.
>>> def pos(x):….. return x>0>>> list(filter(pos, range(-5,6)))[1,2,3,4,5] |
이것을 익명 함수를 이용하면 다음과 같이 간단하게 처리할 수 있다.
>>> list( filter(lambda x:x>0, range(-5,6)) )[1,2,3,4,5] |
또는 다음과 같이 간단한 함수들을 리스트의 요소로 지정할 경우도 있을 것이다.
>>> fl = [lambda x,y:x+y, lambda x,y:x*y]>>> fl[0](1,2)3>>> fl[1](3,4)12 |
이와 같이 람다 함수의 용도는 보다 간결하게 원하는 기능을 수행할 수 있도록 하는 것이다.
댓글 없음:
댓글 쓰기