Python - Lambda

Enjoywater·2020년 8월 27일
0

TIL

목록 보기
12/33
post-thumbnail

Lambda

Lambda란,

인라인 함수를 정의할 때 사용하며,
anonymous functions 또는 lambda expression 이라고 부른다.

우리가 사용하는 일반적인 함수와의 차이점을 살펴보면,

  • 함수 이름의 유무
  • 내부에서 처리하는 로직들의 작성방법

로 크게 볼 수 있다.

먼저 일반적으로 사용하는 함수의 형태를보면,

def name(arg1, arg2 ...):
    block of statement

으로 함수의 이름(name)이 적혀있고, 내부에서 블록으로 처리하는 로직들을 작성한다.

하지만 람다의 경우에는,

lambda argument1, argument2, ... argumentN : expression using arguments

으로 간결하게 인라인으로 작성이 가능하다.
또한 람다는 return문이 없어도 표현식의 결과가 return된다.

람다 표현식도 nested 될 수 있고, 다소 복잡한 구조를 가질 수도 있지만 가장 일반적인 형식은 위 예시 코드이다.

또한, 일반적인 함수의 경우에는 객체를 만들고, 재사용을 위해 함수 이름(메모리)를 할당을 한다.
하지만 람다의 경우에는 익명함수이기 때문에 한번 쓰이고 다음줄로 넘어가면 힙(heap) 메모리 영역에서 증발하게 된다. (예외도 있음)

간단한 함수를 람다로 바꿔보는 예제를 보며 차이를 살펴보자.


일반적인 함수

def func(a):
    print(a * a)

func(2)

# 결과값 -> 4

lambda

test_lambda = lambda a: print(a*a)

test_lambda(2)

# 결과값 -> 4

이처럼 간결하게 작성할 수 있다.


Lambda의 사용

람다는 간단하게 인라인 콜백함수를 만들거나, 함수 안에서 복잡한 처리를 할 수 없을 때 유용하게 사용할 수 있다.

콜백함수(callback)란 어떠한 이벤트가 발생했을때 호출되는 함수이다.
콜백함수여러 블록으로 구성된 실행문이 아니고, 다른 컴포넌트에서 사용되지 않는다면 해당 컴포넌트만을 위한 람다 표현식이 적절하다고 볼 수 있다.

Lambdas = [
    lambda x : x ** 2,
    lambda x : x ** 3,
    lambda x : x ** 4
]

for lambda_func in Lambdas:
    print( lambda_func(2) )

위 코드를 일반적인 함수로 표현하게 된다면, 인라인 3줄이 아닌 3개의 함수가 생성되어 코드가 더 길고 사용하기에 불편하게 되어버린다.



profile
블로그 이전 👉🏻 enjoywater.tistory.com

0개의 댓글