본문 바로가기
Python/Python Programming language

[초급] 파이썬 함수와 모듈 / 람다 함수

by Maccrey Coding 2024. 10. 1.
728x90
반응형

 

오늘은 파이썬의 람다 함수(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.

 

Tester Share [테스터쉐어] - Google Play 앱

Tester Share로 Google Play 앱 등록을 단순화하세요.

play.google.com

 

 

728x90
반응형