본문 바로가기

코딩/파이썬 기초

[Python] 파이썬 튜토리얼 023. 익명의 함수 정의, 람다 (lambda)

python : lambda : 익명의 함수 정의

▶ 익명의 함수 정의, 람다 (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라는 키워드를 사용해 한 줄로 정의한 것처럼 보이면, 람다 함수의 정의는 이해한 것이리라.

 

my_sum(2, 3) 실행 결과

 

람다 함수도 함수이기 때문에 파라미터의 기본값 정의 및 키워드=값 형식으로 전달인자를 정의하는 것 또한 가능하다.

 

# 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