파이썬 lambda 람다 함수 사용법 — 한 줄 익명 함수 정리
2026-06-13 · Python · 파이썬 · 기초 · 함수
파이썬 lambda 람다 함수란?
파이썬 lambda(람다) 함수는 이름 없이 한 줄로 정의하는 작은 익명 함수입니다. def로 함수를 따로 만들 만큼 거창하지 않은 간단한 동작을, 필요한 그 자리에 바로 적어 넣을 때 사용합니다. 특히 sorted(), map(), filter()처럼 함수를 인자로 받는 함수와 함께 자주 쓰입니다.
기본 문법
lambda 매개변수: 반환할_표현식
def 함수와 비교해 보면 차이가 한눈에 보입니다. 아래 두 함수는 완전히 같은 동작을 합니다.
# def 방식
def add(a, b):
return a + b
# lambda 방식
add = lambda a, b: a + b
print(add(3, 4)) # 7
람다는 return을 쓰지 않습니다. 콜론 뒤의 표현식 결과가 자동으로 반환됩니다.
인자가 없거나 여러 개일 때
hello = lambda: "안녕"
print(hello()) # 안녕
mul = lambda x, y, z: x * y * z
print(mul(2, 3, 4)) # 24
실전 예제 — 람다가 빛나는 곳
sorted()의 정렬 기준
튜플 리스트를 두 번째 값 기준으로 정렬하는 예제입니다.
people = [("민수", 25), ("지영", 19), ("철수", 31)]
by_age = sorted(people, key=lambda p: p[1])
print(by_age)
# [('지영', 19), ('민수', 25), ('철수', 31)]
map() — 모든 요소 변환
nums = [1, 2, 3, 4]
squared = list(map(lambda x: x ** 2, nums))
print(squared) # [1, 4, 9, 16]
filter() — 조건에 맞는 것만
nums = [1, 2, 3, 4, 5, 6]
evens = list(filter(lambda x: x % 2 == 0, nums))
print(evens) # [2, 4, 6]
조건(삼항) 표현식 넣기
sign = lambda x: "양수" if x > 0 else "음수 또는 0"
print(sign(5)) # 양수
print(sign(-2)) # 음수 또는 0
람다 vs def 비교
| 구분 | lambda | def |
|---|---|---|
| 이름 | 없음(익명) | 있음 |
| 본문 | 표현식 하나 | 여러 줄 가능 |
| return | 자동 반환 | 명시 필요 |
| 적합한 경우 | 짧은 일회용 함수 | 복잡하고 재사용되는 함수 |
자주 하는 실수
- 람다에 변수 이름 붙이기:
f = lambda x: x+1처럼 람다를 변수에 할당하는 것은 권장되지 않습니다. 이름이 필요하면 그냥def를 쓰는 편이 가독성에 좋습니다. - 여러 줄 로직 욱여넣기: 람다 본문은 표현식 하나만 가능합니다.
if문이나 반복문, 여러 동작이 필요하면def를 사용하세요. - 반복문 변수 캡처: 반복문 안에서 람다를 만들면 모든 람다가 마지막 변수 값을 공유할 수 있습니다.
lambda x, i=i: ...처럼 기본값으로 현재 값을 고정하세요. - print를 본문에 사용: 옛 파이썬2 습관으로
lambda: print(...)를 쓰면 반환값이None입니다. 람다는 "값을 반환"하는 용도가 자연스럽습니다.
자주 묻는 질문
Q. 람다와 def 중 무엇을 써야 하나요?
한 줄짜리 간단한 함수를 sorted, map, filter 등에 잠깐 넘길 때는 람다가 깔끔합니다. 그 외에 이름을 붙여 재사용하거나 로직이 길면 def가 정답입니다.
Q. 람다로 map/filter를 쓰는 것보다 더 나은 방법이 있나요?
많은 경우 리스트 컴프리헨션이 더 읽기 쉽습니다. 예: [x**2 for x in nums]가 map(lambda x: x**2, nums)보다 직관적입니다. 상황에 맞게 선택하세요.
Q. 람다에 기본값 매개변수를 줄 수 있나요?
네. lambda x, y=10: x + y처럼 def와 동일하게 기본값을 지정할 수 있습니다. 위에서 언급한 반복문 변수 캡처 문제를 해결할 때도 이 기능을 활용합니다.