람다(Lambda) 함수는 실행 시점(runtime)에 생성되는 익명의 한 줄짜리 함수입니다. 일반적인 함수처럼 def 문으로 이름을 붙여 정의하는 것이 아니라, 함수가 필요한 자리에서 즉석으로 만들어 사용할 수 있다는 점이 가장 큰 특징입니다.
람다 함수에는 return 문이 포함되지 않으며, 항상 하나의 표현식(expression)을 평가한 결과를 그대로 반환합니다. 또한 함수 객체가 요구되는 위치라면 어디든 람다 정의를 넣을 수 있습니다.
람다 함수의 주요 특징
- 익명 함수: 함수 이름 없이 정의되며, 필요하다면 변수에 할당해 사용할 수 있습니다.
- 단일 표현식: 여러 줄의 로직을 담을 수 없고, 하나의 표현식만 작성합니다.
- 자동 반환: return 문 없이도 표현식의 계산 결과가 자동으로 반환됩니다.
- 인라인 정의: 함수가 전달되어야 하는 자리에 곧바로 정의할 수 있습니다.
람다 함수는 언제 사용할까?
어떤 기능이 프로그램 전체에서 단 한 번만 사용되고 오직 한 곳에서만 호출된다면, 굳이 이름을 붙여 별도의 함수를 정의할 필요가 없습니다. 이럴 때 람다 표현식을 사용하면 해당 코드 자리에서 기능을 직접 정의할 수 있어, 불필요한 함수 선언을 없애고 코드를 더 간결하게 유지할 수 있습니다.
특히 map(), filter(), sorted()의 key 인자처럼 짧은 함수를 임시로 전달해야 하는 상황에서 람다 함수가 널리 활용됩니다.
기본 문법
lambda 인자: 표현식
콜론(:) 앞에는 매개변수(인자)를, 뒤에는 반환될 표현식을 작성합니다. 예를 들어 두 수를 더하는 함수는 다음과 같이 정의할 수 있습니다.
lambda x, y: x + y
사용 예제
아래 코드는 두 개의 인자를 받아 더한 값을 반환하는 람다 함수를 변수 add에 할당하고 호출하는 예제입니다.
add = lambda x, y: x + y
print(add(4, 6))
실행 결과
10
함께 알아두면 좋은 활용 예
람다는 다른 함수의 인자로 전달될 때 진가를 발휘합니다. 예를 들어 리스트를 조건별로 정렬할 때 다음과 같이 사용할 수 있습니다.
pairs = [(1, 'one'), (2, 'two'), (3, 'three')]
pairs.sort(key=lambda pair: pair[1])
print(pairs)
이처럼 람다 함수를 잘 활용하면 간단한 연산이나 콜백 로직을 별도의 함수 정의 없이 깔끔하게 처리할 수 있습니다.