[파이썬] 람다 표현식(Lambda Expression)
Data Analysis/Python

[파이썬] 람다 표현식(Lambda Expression)

람다 표현식

람다 표현식은 함수의 기능을 런타임에서 생성해서 사용할 수 있는 익명 함수입니다.

 

람다 표현식의 장점은,

 

1. 간결함

2. 메모리 절약

 

입니다. 

 

 보통 함수는 def 라는 키워드를 통해서 기능을 정의하고 여러 코드에서 해당 함수를 호출하여 사용합니다. 하지만, 람다 표현식은 한번 쓰고 버리는 일시적인 함수(이름없는 함수, 익명 함수)입니다. 함수를 간편하게 작성할 수 있어서 다른 함수의 인수를 넣을 때 주로 사용합니다. 또한, 한 번 쓰이고 다음 라인으로 넘어가면 힙(heap) 메모리 영역에서 제거되어 메모리 절약에 대한 장점이 있습니다.

 

하지만, 이러한 간결함으로 인해 지나치게 람다 표현식을 사용하게 되면 코드의 가독성을 떨어트리는 단점이 있습니다. 그렇기에 적시적소에 람다 표현식을 사용하는 센스가 필요합니다! 

 

람다 함수 예제,

보통 함수

def sum(x, y):
	return x + y

람다로 표현한 함수

sum = lambda x, y : x + y

 

구글 파이썬 스타일 가이드에서 제공한 람다 표현식 가이드

2.10 Lambda Function

2.10.1 정의

람다 함수는 문장이 아닌 표현으로 익명 함수를 정의한다. 람다 함수는 map() 이나 filter()와 같은 고차 함수에 대한 callbacks(콜백)이나 operator(연산자)를 정의하는 데 사용된다.

 

2.10.2 장점

간결하다.

 

2.10.3 단점

로컬 기능보다 읽기 및 디버깅이 더 어렵다. 이름이 없다는 것은 흐름을 파악하는데 더 이해하기 어렵다는 것을 의미한다. 함수에 표현식만 포함될 수 있기 때문에 표현성이 제한된다. 

 

2.10.4

한줄 짜리 코드를 작성하기가 좋다. 람다 함수의 내부 문자 코드 길이가 60-80보다 길면 중첩 함수를 사용하는게 좋다. 

 

더하기, 빼기, 곱하기 같은 보통의 연산자는 람다 함수 보다는 operator 모듈의 함수를 하용하는게 더 나을 수 있다. 예를 들어, 

operator.mul to lambda x, y: x * y

2.10 Lambda Function

Okay for one-liners.

 

2.10.1 Definition

Lambdas define anonymous functions in an expression, as opposed to a statement. They are often used to define callbacks or operators for higher-order functions like map() and filter().

 

2.10.2 Pros

Convenient.

 

2.10.3 Cons

Harder to read and debug than local functions. The lack of names means stack traces are more difficult to understand. Expressiveness is limited because the function may only contain an expression.

 

2.10.4 Decision

Okay to use them for one-liners. If the code inside the lambda function is longer than 60-80 chars, it’s probably better to define it as a regular nested function.

 

For common operations like multiplication, use the functions from the operator module instead of lambda functions. For example, prefer operator.mul to lambda x, y: x * y.

 

'Data Analysis > Python' 카테고리의 다른 글

[파이썬] 파이썬 역사와 파이썬 다움이란.  (0) 2020.10.10