람다(lambda)는 「이름 없이 한 줄로 정의하는 작은 함수」입니다.
「lambda 매개변수: 표현식」 형식이며, 잠깐 쓰고 버릴 함수를 정의할 때 유용합니다.
기본 형식.
add = lambda x, y: x + y.
add(3, 5) — 8.
def add(x, y): return x + y와 같은 결과지만 한 줄.
그러나 람다는 보통 변수에 할당하지 않고, 다른 함수의 인자로 즉석에서 정의해 넘기는 용도로 더 자주 씁니다.
전형적 활용은 「sort, map, filter의 key/조건」으로 넘기기.
sorted(students, key=lambda s: s.age) — 나이 기준 정렬.
map(lambda x: x*2, nums) — 모든 값 두 배.
filter(lambda x: x > 0, nums) — 양수만.
짧은 변환·조건을 표현하는 데 자연스럽습니다.
제약.
람다는 「표현식 하나」만 가능하며 print, if·else 블록 같은 「문장(statement)」은 못 씁니다.
단순 변환·조건이 아닌 복잡한 로직은 def로 정의하는 게 좋습니다.
「람다가 길어지면 def로 옮길 신호」라고 봅니다.
비유하자면 람다는 「쇼핑하다 잠깐 메모하는 포스트잇」 같습니다.
짧고 즉석이며, 그 자리에서 쓰고 버립니다.
길게 쓰거나 여러 번 쓸 거라면 「공식 노트(def 함수)」로 옮기는 게 가독성에 좋습니다.
PEP 8도 「복잡한 람다는 def로 바꾸라」고 권장합니다.
한 줄 요약
람다는 한 줄짜리 익명 함수로, sort·map·filter의 key/조건에 즉석으로 넘길 때 유용합니다.
표현식 하나만 가능하며 복잡해지면 def로 옮기는 게 좋습니다.
더 알아볼 것
- 람다 vs def — 사용 기준
- operator 모듈 — 더 명시적인 함수들
- Python에 람다 캘큘러스가 있는가