▶ 익명의 함수 정의, 람다 (lambda)
위키백과는 람다를 그리스 문자 중 11번째 글자인 λ(람다)라고 소개한다.
이 람다는 그리스 숫자로는 30을 뜻하고, 로마 문자 L이 이 람다에서 비롯되었다고도 한다.
파이썬 docs에 설명되어 있는 람다 표현식 (lambda expressions) 또는 람다 함수는 간단한 익명의 함수를 정의할 때 사용할 수 있다고 설명한다.
익명의 함수를 정의한다는 의미는 보통 함수를 정의할 때 사용하는 키워드 def나 함수명을 사용하지 않으면서 함수를 정의한다는 의미이다.
람다 표현식 또는 람다 함수의 정의는 아래와 같은 형식을 갖는다.
lambda parameter_list : expression
두 개의 정수를 전달받아 둘을 더한 값을 반환하는 람다 함수의 정의 및 사용 예를 들어 본다.
# python 3.9.5
my_sum = lambda a, b: a + b
print(my_sum(2, 3))
파라미터 a, b를 입력받고 a + b의 값을 반환하는 함수를 lambda라는 키워드를 사용해 한 줄로 정의한 것처럼 보이면, 람다 함수의 정의는 이해한 것이리라.
람다 함수도 함수이기 때문에 파라미터의 기본값 정의 및 키워드=값 형식으로 전달인자를 정의하는 것 또한 가능하다.
# python 3.9.5
my_sum = lambda a=10, b=20: a + b
print(my_sum(2, 3))
print(my_sum())
print(my_sum(b=3))
아래의 코드와 같이 람다 함수 정의 시 파라미터를 정의하지 않는 것도 가능하다.
my_print = lambda: print('Hello lambda')
my_print()
람다 함수의 특징이라고 할 수 있는 것으로
람다 함수의 표현식 정의 시 람다 함수의 파라미터가 아닌 람다 함수 정의 이전에 생성된 변수를 사용하는 것도 가능하다. 그리고 코드 상에서 해당 변수 값의 변경은 람다 함수가 반환하는 값에 영향을 준다.
# python 3.9.5
a = 100
b = 200
c = 0
my_sum = lambda a=10, b=20: a + b + c
print(my_sum(2, 3))
c = 100
print(my_sum(2, 3))
두번째 my_sum(2, 3) 코드의 결과는 c 변수의 값이 0에서 100으로 변경되었기 때문에 105가 되었다.
람다 함수는 하나의 표현식, 즉 한 줄로 정의하나 보기의 편의 상 표현식 정의 시 역슬래시 사용도 가능하다.
my_sum = lambda a=10, b=20: a\
+ b\
+ c
'코딩 > 파이썬 기초' 카테고리의 다른 글
파이썬 튜토리얼 025. 리스트와 자료구조 스택 (0) | 2021.07.03 |
---|---|
파이썬 튜토리얼 024. 리스트 관련 메서드 (list methods) (0) | 2021.07.03 |
[Python] 파이썬 튜토리얼 022. 리스트, 튜플, 딕셔너리 데이터 언패킹 (unpacking list, tuple, dict) (0) | 2021.06.19 |
[Python] 파이썬 튜토리얼 021. 함수 매개변수에 별표 *와 **의 혼용 (*args, **kw) (0) | 2021.06.13 |
[Python] 파이썬 튜토리얼 020. 함수 매개변수에 별표 ** 사용 (*=애스터리스크, **kw) (0) | 2021.06.12 |