프로그래밍/Python

Python - lambda expr에 대한 상세한 설명.

꿈꾸는 사람_Anthony 2021. 6. 6. 00:13
반응형

기본 정의 및 사용법

(lambda forms라고도 불리는) Lambda 표현(expression)은 익명의 함수(이름이 존재하지 않는, 선언 당시에만 사용하는 (해석)함수) (anonymous functions)를 만들기 위해 사용됩니다.

 

lambda Expression은 function object를 yield시킵니다.

yield에 대한 설명은 다음 링크를 참조하십시오. (link)

(yield를 모르는 독자를 위해 간단히 말하자면, yield는 return(반환)과 비슷한 역할을 합니다.)

Expression(표현, 문법)

lambda_expr ::= "lambda" [parameter_list] ":" expression

람다표현식은 다음과 같이 정의됩니다.

lambda [parameter_list] : expression

이 Expression은 다음과 거의 동일한 역할을 수행합니다.(이름이 지정되지 않는 점이 차이)

def <lambda>(parameters):
	return expression

앞서 언급하였듯이, lamda expr은 호출되지 않은 함수 객체를 yield시킵니다.

이를 통해 마치 함수 객체를 다루듯이 호출 등의 동작들을 수행할 수 있습니다.

함수 객체에 대한 설명은 다음 링크를 참조하십시오(link)

 

이 중, parameter_list를 살펴보자면, 함수 선언부에서의 parameter와 같은 방식으로 사용할 수 있습니다.

아래는 parameter의 표현에 대한 예시입니다.

lambda *args : sum(args)
#위 lambda로 정의된 함수를 호출한 결과를 살펴보겠습니다.
#(lambda호출은 아래 포스팅 내용에서 다룹니다.)
(lambda *args : sum(args))(1,2,3,4,5) # 15
(lambda *args : sum(args))(1,2,3,4,5,6) # 21

 

대표적인 호출법에 대해 알아보겠습니다.

1. 함수 객체로서 호출하는 가장 기본적인 방법을 사용할 수 있습니다.

(lambda x,y : x*y)(1,2)

2. 생성된 함수 객체를 변수에 저장하여 사용할 수 있습니다.

lambda_add = lambda x,y : x+y
lambda_add(1,2)

3. map함수를 이용할 수도 있습니다.

map함수에 대한 설명윽 다음 링크를 참조하십시오. (link)

list(map(lambda x,y : x+y, [1,2], [3,4]))

 

Lambda Expression(람다 표현식)은 Annotaions이나, Statements(문장)을 포함할 수 없습니다.

Statements에 대한 설명은 다음 링크를 참조하십시오. (link)

: 다음 예시는 허용되지 않는 표현으로, 에러를 발생시킵니다.

lambda x : a = 2

annotation에 대해서는 다음 링크를 참고해주세요. (link)

 

출처 : python.org

반응형