Python 08 - Lambda

Kjjedd·2025년 12월 30일

Python

목록 보기
8/10
post-thumbnail

⚡ 람다(lambda)

람다(lambda)는 파이썬을 처음 배우는 사람에게
유독 낯설고, 애매하고, 헷갈리는 개념이다.

“굳이 왜 써야 하지?”
“def로 함수 만들면 되는 거 아닌가?”


🤔 람다는 왜 존재할까?

문제 상황: 한 번만 쓰는 함수

학생들을 점수 기준으로 정렬하고 싶다고 가정해보자.

students = [
  {"name": "철수", "score": 85},
  {"name": "영희", "score": 92},
  {"name": "민수", "score": 78}
]

def get_score(student):
    return student["score"]

sorted_students = sorted(students, key=get_score)

동작에는 문제가 없다.
하지만 이 함수에는 치명적인 특징이 있다.

  • 이름이 있다
  • 파일에 남는다
  • 하지만 딱 한 번만 쓰인다

❌ 이런 함수가 많아질수록
코드에는 “의미 없는 함수 이름”이 쌓이게 된다


✨ 해결책: 람다(lambda)

sorted_students = sorted(
  students,
  key=lambda x: x["score"]
)

함수 이름도 없고,
def도 없고,
return도 없다.

“한 번만 쓰는 간단한 함수”를 즉석에서 만든다
이것이 람다의 존재 이유다


🎭 비유로 이해하기

  • 일반 함수(def) → 정식 문서
  • 람다(lambda) → 포스트잇 메모

✔ 정식 문서는 이름이 있고 오래 쓴다
✔ 포스트잇은 간단하고, 쓰고 버린다

👉 복잡하면 def
👉 짧고 즉석이면 lambda


🧩 람다 기본 문법

lambda 매개변수: 표현식

람다에서 가장 중요한 규칙은 단 하나다.

람다는 반드시 “한 줄 표현식”이어야 한다

예제

# 1. 하나의 인자
square = lambda x: x ** 2

# 2. 두 개의 인자
add = lambda x, y: x + y

# 3. 조건 표현식
is_even = lambda x: "짝수" if x % 2 == 0 else "홀수"

❌ if / for / 여러 줄 로직 불가능
❌ return 사용 불가


📌 언제 람다를 쓰는가?

👉 “함수를 다른 함수에 전달할 때”


🔹 sorted + lambda (실무 최빈도)

students = [
  {"name": "철수", "score": 85},
  {"name": "영희", "score": 92},
  {"name": "민수", "score": 78}
]

sorted_by_score = sorted(
  students,
  key=lambda s: s["score"]
)

sorted는 내부적으로 이렇게 묻는다.

  • “각 요소에서 정렬 기준이 뭐야?”

그 질문에 답하는 함수가 바로 lambda다.


🔹 max / min + lambda

top_student = max(students, key=lambda s: s["score"])
bottom_student = min(students, key=lambda s: s["score"])

✔ 최고값 / 최저값 기준 지정
✔ 실무에서 정말 자주 등장


🔹 map / filter + lambda

map: 변환

numbers = [1, 2, 3, 4, 5]
squared = list(map(lambda x: x ** 2, numbers))

filter: 조건

even = list(filter(lambda x: x % 2 == 0, numbers))

⚖️ 람다 vs 리스트 컴프리헨션

파이썬 커뮤니티의 일반적인 합의는 다음과 같다.

👉 map / filter보다 리스트 컴프리헨션이 더 읽기 좋다

# lambda + map
[x ** 2 for x in numbers]

# lambda + filter
[x for x in numbers if x % 2 == 0]

그렇다면 람다는 쓸모없는 걸까?

❌ 아니다
key 인자가 필요한 함수에서는 람다가 사실상 필수


🚫 람다를 쓰면 안 되는 순간

  • 로직이 길어질 때
  • 설명이 필요한 함수일 때
  • 재사용이 필요한 경우
  • 디버깅이 중요할 때

❗ 람다는 “짧음”이 무기다
길어지는 순간 가독성은 무너진다


🧠 기억할 포인트

  • 람다는 이름 없는 함수
  • 한 줄 표현식만 가능하다
  • sorted / max / min에서 가장 많이 쓰인다
  • 복잡해지면 즉시 def로 전환한다

✨ 핵심 요약

  • 람다는 코드를 짧게 만드는 도구가 아니다
  • 의도를 명확히 만드는 도구다
  • 한 번 쓰는 로직 → lambda
  • 설명과 구조가 필요 → def
profile
Gongbuhaja

0개의 댓글