파이썬에서 람다 함수는 이름없는 함수이다. 이름이 없기 때문에 한번 쓰면 다시 불러올 수 없다. 즉, 1회용 함수이다.


왜 쓰냐건, 웃지요.


바꿔 말해서, 한번쓰고 버릴 함수를 만들기 위해서 쓴다.


문법은 lambda를 써 주고, 인자를 써주고, 리턴값을 쓰면 된다.


(lambda x, y, z: x+y+z)(1,2,3)


이게 전부다. 저러면 6이 나온다.


http://coreapython.hosting.paran.com/dive/chap04.html#apihelper.lambda


어쨌든 파이썬의 강력한 기능 중 하나라고 한다.


한가지 중요한건, 람다 함수로 할 수 있는건 람다 함수를 쓰지 않고도 전부 할 수 있다는 점이다. 반대로, 람다 함수가 아닌 다른 함수로 할 수 있는 일 중에는 람다 함수로 할 수 없는 것도 있다.


그럼 람다 함수가 뭐가 좋아서 쓰는걸까? 파이썬 사용자들의 말에 의하면 더 우아하고 더 효율적이라고 한다.


사실 이걸 사용하면 한줄에 다 담을 수 있고, def를 써서 정의하지 않아도 되므로 이름을 붙이는 수고를 덜 수 있고(인간적 관점과 메모리 점유율 관점에서), 함수를 찾아보러 어디 다녀오지 않아도 된다.


내 경우에는, 어떤 함수를 람다 함수로 정의하기 위해서 코드를 머릿속에서 만드는데 걸리는 시간이 15초 이하라면 써볼만 할 것 같다. 그 이상 걸린다면 그냥 함수를 하던대로 정의해서 쓰는 것이 낫겠다는 생각이 든다.


이 문제를 어떻게 풀 것인가? 에 관한 고민에서, 어떤 경우는 람다 함수를 사용하면 매우 간단하고 간결한 해법이 나올 수도 있으므로 사용법과 문법은 익혀두는 것이 좋겠다. map, reduce, filter 등의 함수와 함께 쓰면 조금 더 강력해진다.

by snowall 2013. 9. 3. 02:23