파이썬에서 리스트의 짝수만 필터링한다고 해봅시다.
가장 간단한 방법은 lambda를 쓰는 겁니다.
digits = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
result = list(filter(lambda x: x % 2 == 0, digits))
print(result) # [2, 4, 6, 8, 10]
lambda는 짧고 간단하지만, 코드 곳곳에서 동일한 로직(짝수 판별)을 반복한다면 매번 lambda를 작성해야 합니다.
1. 내부 함수 구조로 만들기
재사용성을 높이고 싶다면 내부 함수(inner function) 로 로직을 분리하는 것이 더 낫습니다.
def also_evens(nums):
def is_even(x): # 내부 함수
return x % 2 == 0
return filter(is_even, nums)
print(list(also_evens(digits))) # [2, 4, 6, 8, 10]
- is_even() 이라는 이름 있는 내부 함수를 두었기 때문에 코드 가독성이 좋아집니다.
- 짝수 판별 로직을 다른 필터링 로직과 바꿔 끼우기도 쉽습니다.
- 한 번 정의해두면 함수 안에서 계속 재사용할 수 있어 효율적입니다.
정리하면
- lambda → 일회성, 간단한 코드에 적합
- 내부 함수 구조 → 같은 로직을 여러 번 쓸 때, 재사용성과 가독성에 유리
- 따라서 재사용할 계획이 있다면 내부 함수 구조로 작성하는 것이 옳다.
'파이썬 > 기초 프로그래밍' 카테고리의 다른 글
| 파이썬 컨텍스트 매니저(Context Manager) 완전 정리 (0) | 2025.09.13 |
|---|---|
| Python 객체 복사: Copy, Shallow Copy, Deep Copy (0) | 2025.09.13 |
| Python map 객체와 형 변환 (0) | 2025.09.13 |
| Python 익명 함수(lambda) vs 일반 함수(def) (0) | 2025.09.13 |
| Python globals()로 동적 전역 변수 만들기 (0) | 2025.09.13 |