[Python] 람다 표현식과 Pythonic Code

Ethan·2022년 4월 29일
1

lambda 람다 표현식

람다표현식(람다식, 람다 함수)는 익명의 함수를 일컫는다.
일반적으로 사용되는 def- 형식의 함수 선언 대신, 간단하게 한 줄 정도로 작성할 수 있다.

주로 고차함수에 인자(argument) 또는 리턴값으로 활용된다.
변수에 담아 써도 되고, 람다식 자체를 가져다 때려 박아도 된다.

# 덧셈 함수
def add(x, y):
   return (x+y)
    
# 한 줄로 줄이면
def add(x, y): return (x+y)

한 줄로 줄이긴 했지만 가독성이 떨어진다.
람다 식으로 바꾸면...

print( (lambda x,y: x+y) (5, 10) )
>>> 15

읽기 쉬운 한 줄로 끝낼 수 있다.

주의사항: 람다 내부에서 새 변수 선언은 불가능하다.

그래서 람다식의 리턴값은 1줄의 식으로 표현할 수 있어야 한다.
대신, 람다식 밖에 있는 변수를 가져올 수는 있다.

y = 10
print( (lambda x: x+y) (5) )
>>> 15

단순히 생각해보면 그냥 미리 만들어 두고 호출하는게 더 쉽지 않나? 싶을 수도 있다.
(애초에 그게 함수를 사용하는 근본적인 이유이기도 하고)

하지만 람다 함수는 메모리 공간을 할당하지 않는다는 장점이 있다.

정확히는 표현식 내에서 메모리 공간을 사용 후, 다음 코드로 넘어가면 바로 힙 메모리를 반납한다.
그래서 메모리를 절약할 수 있다. 따봉.

근데... 힙이 뭐야? 🤔

스택, 힙 개념까지 넘어가면 너무 복잡해지니까 일단 여기까지만 이해하고 넘어가자.

map() 함수에 람다 사용하기

map(f, iterable) 함수는 입력받은 자료형의 각 요소를 함수(f)로 실행한 결과를 묶어서 map iterator 객체로 출력한다.

# 인풋을 2배로 돌려주는 함수
def list_mul(x):
    return x*2

result = list(map(multi_2, ([1,2,3])) # map object로 나오기 때문에 list로 변환

print(result)
>>> [2, 4, 6]

람다가 출동하면 어떨까?

result = list(map(lambda x: x*2, [1,2,3]))
print(result)
>>> [2, 4, 6]

훨씬 짧아졌다!

이외에도 filter(), reduce() 등 람다식과 궁합이 좋은 함수들이 있다.


파이썬의 코드 가독성에 대해...

profile
재미있게 살고 싶은 대학원생

0개의 댓글