
lambda는 함수를 생성할 때 사용하는 예약어로 def와 동일한 역할을 한다. 보통 함수를 한 줄로 간결하게 만들 때 사용한다. def를 사용해야 할 정도로 복잡하지 않거나 def를 사용할 수 없는 곳에 주로 쓰인다.
사용법은 다음과 같다.
lambda 매개변수1, 매개변수2, ... : 매개변수를 사용한 표현식
한 번 직접 만들어 보자.
add = lambda a, b: a + b
result = add(3, 4)
print(result)
add는 두 개의 인수를 받아 서로 더한 값을 돌려주는 lambda 함수이다. lambda 예약어로 만든 함수는 return 명령어가 없어도 결괏값을 돌려준다. 위 예제는 def를 사용한 다음 함수와 하는 일이 완전 동일하다.
def add(a, b):
return a + b
result = add(3, 4)
print(result)
sorted() 함수로 정렬을 할 때에 lambda를 자주 볼 수 있다. sorted() 함수는 리스트를 정렬하여 새로운 리스트로 만드는 내장 함수이다. sorted() 함수는 매개변수로 key 함수를 사용할 수 있는데, key 매개변수의 값은 단일 인자를 취하고 정렬 목적으로 사용할 키를 반환하여야 한다. 정렬의 기준이 되는 key에 람다 표현식을 이용할 수 있다.
fruit_list = [['orange', 6], ['mango', 1], ['apple', 10], ['banana', 8]]
# 과일명으로 정렬
sorted_by_alphabet = sorted(fruit_list, key=lambda fruit: fruit[0])
# 과일 개수로 정렬
sorted_by_number = sorted(fruit_list, key=lambda fruit: fruit[1])
람다식은 이름이 없기 때문에 변수에 담아서 쓰는 방법을 보통 취한다. 일반적으로 함수는 객체를 생성하고 리소스(메모리)에 할당하는 스텝을 밟는다. 그러나 람다는 즉시 실행되는 함수이기에 heap 영역에 저장이 되고, 메모리가 초기화 된다. 즉, 람다식은 메모리를 좀 더 효율적으로 사용하는 것이다. 다만, 람다식을 남발할 경우 가독성이 떨어진다는 의견이 다수이다.
[참고문헌]
나동빈, 2021, 「이것이 취업을 위한 코딩 테스트다 with 파이썬」, 한빛미디어.
박응용, 2021, 「Do it! 점프 투 파이썬」, 이지스퍼블리싱.
'Language > Python' 카테고리의 다른 글
| 자료형의 복사 .copy() 와 .deepcopy() (0) | 2022.10.20 |
|---|---|
| 문자열 포매팅 (1) | 2022.10.19 |