오늘은 파이썬의 람다 함수(lambda)에 대해 알아볼 거예요.
람다 함수는 한 줄로 짧게 쓸 수 있는 함수로, 간단한 작업을 빠르게 처리할 때 유용하게 사용됩니다.
이 글에서는 람다 함수의 정의와 사용법을 초보자도 쉽게 이해할 수 있도록 차근차근 설명해 드릴게요.
1. 함수란?
함수는 파이썬에서 특정 작업을 수행하는 코드 블록을 말해요. 우리는 함수에 입력을 주고, 그 함수가 어떤 결과를 반환하게 할 수 있습니다.
예를 들어, 아래처럼 add라는 이름의 함수를 정의할 수 있어요.
def add(x, y):
return x + y
add 함수는 두 숫자를 더하는 기능을 합니다. 이렇게 정의된 함수는 여러 줄로 작성되며, 이름을 통해 호출할 수 있습니다.
하지만, 이름을 붙일 필요 없이 아주 짧고 간단한 함수를 만들 때는 람다 함수를 사용할 수 있습니다.
2. 람다 함수란?
람다 함수는 익명 함수(anonymous function)라고도 불립니다.
왜냐하면, 함수에 이름을 붙이지 않고도 간단히 함수를 정의할 수 있기 때문이죠.
람다 함수는 다음과 같은 형식으로 작성됩니다.
lambda 매개변수1, 매개변수2, ... : 표현식
- lambda 키워드를 사용해 함수를 정의합니다.
- 그 뒤에 매개변수를 나열하고, 콜론(:)을 붙여 줍니다.
- 콜론 뒤에는 반환할 표현식을 적습니다.
3. 람다 함수 사용 예시
두 수를 더하는 람다 함수
위에서 정의한 add 함수를 람다 함수로 바꿔 볼게요.
add = lambda x, y: x + y
이렇게 짧게 정의할 수 있어요. 사용법은 일반 함수와 동일합니다.
print(add(3, 4)) # 출력: 7
설명
- lambda x, y: x + y는 두 개의 입력(x, y)을 받아 더한 값을 반환하는 람다 함수입니다.
- add라는 변수에 이 람다 함수를 할당해서, 이제 add(3, 4)처럼 함수를 호출할 수 있죠.
4. 언제 람다 함수를 사용할까?
람다 함수는 짧고 간단한 작업을 수행할 때 주로 사용됩니다. 보통 한 번만 사용할 함수나 매우 간단한 연산을 처리할 때 유용하죠.
특히, 파이썬의 내장 함수와 함께 사용할 때 매우 유용합니다.
5. 람다 함수와 내장 함수 함께 사용하기
파이썬에서는 람다 함수를 내장 함수인 map(), filter(), sort()와 함께 자주 사용합니다.
(1) map() 함수와 람다
map() 함수는 리스트나 다른 반복 가능한 객체의 각 요소에 함수를 적용해서 새로운 리스트를 만들어줍니다. 이때 람다 함수를 사용하면 코드를 짧고 간결하게 작성할 수 있어요.
numbers = [1, 2, 3, 4, 5]
# 각 숫자에 2를 곱하는 람다 함수
doubled = list(map(lambda x: x * 2, numbers))
print(doubled) # 출력: [2, 4, 6, 8, 10]
설명
- map(lambda x: x * 2, numbers)는 리스트 numbers의 각 요소에 x * 2라는 람다 함수를 적용합니다.
- 결과는 [2, 4, 6, 8, 10]입니다.
(2) filter() 함수와 람다
filter() 함수는 리스트의 각 요소를 조건에 맞게 필터링해줍니다. 람다 함수를 사용해서 필터링 조건을 간단히 작성할 수 있습니다.
numbers = [1, 2, 3, 4, 5]
# 짝수만 골라내는 람다 함수
even_numbers = list(filter(lambda x: x % 2 == 0, numbers))
print(even_numbers) # 출력: [2, 4]
설명
- filter(lambda x: x % 2 == 0, numbers)는 리스트 numbers에서 짝수만 골라내는 람다 함수를 적용합니다.
- 결과는 [2, 4]입니다.
(3) sort() 함수와 람다
sort() 함수는 리스트를 정렬할 때 사용하는 함수입니다. 이때 정렬 기준을 람다 함수로 지정할 수 있습니다.
students = [
{"name": "John", "score": 90},
{"name": "Jane", "score": 85},
{"name": "Dave", "score": 95}
]
# 점수를 기준으로 정렬하는 람다 함수
students.sort(key=lambda student: student['score'])
print(students)
# 출력: [{'name': 'Jane', 'score': 85}, {'name': 'John', 'score': 90}, {'name': 'Dave', 'score': 95}]
설명
- sort(key=lambda student: student['score'])는 각 학생의 score 값을 기준으로 정렬합니다.
- 결과는 점수가 낮은 순서대로 정렬된 리스트입니다.
6. 람다 함수의 장단점
장점
- 코드가 간결합니다. 함수 이름을 지정하지 않고도 빠르게 함수를 정의할 수 있어서, 짧은 코드 작성에 매우 유용합니다.
- 한 번만 사용할 함수를 정의할 때 편리합니다. 예를 들어, 복잡한 이름을 붙일 필요 없이 간단히 정의해서 사용할 수 있죠.
단점
- 복잡한 작업에는 적합하지 않습니다. 람다 함수는 한 줄로만 작성할 수 있기 때문에, 여러 줄로 코딩해야 하는 복잡한 로직은 구현하기 어렵습니다.
- 가독성이 떨어질 수 있습니다. 람다 함수는 코드가 짧아서 좋지만, 너무 많이 사용하면 코드의 의도를 이해하기 어려울 수 있습니다.
7. 모듈에서 람다 함수 사용하기
람다 함수는 모듈 내에서도 사용할 수 있습니다. 예를 들어, 함수를 모듈에 정의하고 다른 파일에서 이를 불러올 수 있죠.
# mymodule.py
double = lambda x: x * 2
다른 파일에서 이 모듈을 불러와 람다 함수를 사용할 수 있습니다.
# main.py
import mymodule
print(mymodule.double(10)) # 출력: 20
이처럼, 람다 함수를 모듈로 분리해 관리할 수도 있습니다.
람다 함수 활용하기
람다 함수는 간단한 연산이나 내장 함수와 함께 사용할 때 매우 유용한 도구입니다.
함수를 간단하게 정의하고 싶을 때, 특히 여러 번 사용할 필요가 없을 때 람다 함수를 활용해 보세요.
구독!! 공감과 댓글,
광고 클릭은 저에게 큰 힘이 됩니다.
Starting Google Play App Distribution! "Tester Share" for Recruiting 20 Testers for a Closed Test.
'Python > Python Programming language' 카테고리의 다른 글
파이썬의 strip()과 split() 함수 (3) | 2024.10.02 |
---|---|
[초급] 파이썬 함수와 모듈 / 모듈과 패키지 (4) | 2024.10.01 |
[초급] 파이썬 함수와 모듈 / 재귀 함수 (1) | 2024.10.01 |
[초급] 파이썬 함수의 정의와 호출/ 함수의 정의와 호출 (2) | 2024.10.01 |
[초급] 파이썬 반복 제어문 / break, continue, pass (1) | 2024.09.22 |