본문 바로가기

Programming/Python Tutorials

[PYTHON 3] Tutorials 37. Lambda


이번 시간에는 Lambda 에 대해 알아보려고 합니다. 프로그래밍 언어를 조금이라도 다뤄본 사용자라면 친숙한 어휘일텐데, 그렇지 못한 초심자들이라면 상당히 낯선 단어이기도 합니다. Lambda(한글식 호명은 '람다'라고 읽으면 됩니다.)는 일종의 작은 함수 정도로 생각하시면 됩니다. 그 동안 어떤 역할을 수행하게 하는 함수를 정의하고 인자를 전달하고 함수를 호출하고 하여 코딩을 하여왔습니다. 그러나 Lambda는 함수와 달리 함수명이 없습니다. 그리고 여러번 호출해서 사용하지 않고 1회성으로 잠깐 사용하는 속성(단기) 함수라고 볼 수도 있습니다. 함수명만 없을 뿐이지, 전달되는 인자는 여전히 표기하여야 하는 공통점이 있습니다.

간단하게 기본적인 'Lambda'를 알아보겠습니다.

기본적인 Lambda의 표기법은 아래와 같습니다.

lambda 전달될 인자(parameter): 처리방법기술.

간단한 예를 살펴보겠습니다.

어떤 수를 5번 곱한 값(제곱)을 answer에 넣겠습니다. lambda x: 를 사용하여 x를 이용한 짧은 함수를 사용하겠다고 기술합니다. 그리고 :(콜론) 뒤에 x값을 가지고 어떤 처리 과정을 다룰지 기술합니다. 아래의 그림을 보시면 x를 이용해 x*x*x*x*x 의 값을 answer에 저장하겠다는 의미입니다.

그리고 Lambda를 사용한 값을 처리하였으므로, 인자값을 전달해 주어야 하겠죠? 아래 그림에서는 출력할 때 x 값을 전달하여 그 결과를 출력하게 하였습니다.

5가 들어가고, 이 숫자 5가 람다를 거쳐서 3125라는 숫자를 뱉어내고 있습니다.

위의 예는 람다가 어떤 것이다 라는것을 알아보기 위한 짧은 예제였습니다.


조금은 복잡(?)한 다른 예제를 알아볼까요?

1부터 5까지의 제곱을 출력하는 코드를 만들어 보겠습니다. 일반적으로 이런 코드를 만드려면 몇줄의 코드를 넣어야 처리가 가능할 것입니다. 뭐.. 반복문을 사용한다던지 조건문을 쓴다든지 해서 말이죠. 그러나 Lambda를 사용하면 단 1줄에 끝이납니다.


아래 코드는, lambda x:  인자로 x 를 전달받겠다는 의미이며, 산술식은 x**2. 즉, x의 제곱을 하겠다는 말입니다. range(1,6)값은 1,2,3,4,5에 해당하는 값이됩니다. 이 두개의 값을 map()이라는 함수를 사용해서 매핑(짝짓기)을 해주고 있습니다. 즉, x의 값이 1,2,3,4,5가 됨을 의미합니다. 이렇게 1,2,3,4,5의 x값이 전달되면 'Lambda'로 처리된 값은 1,4,9,16,25가 되겠죠? 이것을 list() 함수를 사용하여 리스트 형태로 표기하게 합니다. 그 결과값을 power에 저장하라는 지시사항으로 이 한 줄의 의미가 종료됩니다.

확인을 위해 프린트를 사용하였습니다.

예상했던 결과로 list형태로 power에 1, 4, 9, 16, 25 값이 저장이 되어 있습니다.

람다도 일종의 함수이나, 함수가 재활용성을 염두에 두고 만드는 메서드라면, 람다는 재활용성보다는 일회성으로 짧게 사용해도 되는 메서드라고 볼 수 있습니다. 프로그램 코딩을 다루다 보면 람다보다는 함수를 더 많이 접하겠지만, 단 1줄에도 가능한 코드를 장황하게 길게 쓸 필요가 없을 때는 람다를 사용하여 깔끔하게 코딩을 할 수 있을 것입니다.