[Python] 람다 함수(lambda)
람다 함수의 존재는 익히 알고 있었지만 그동안 활용하지 못하다가, 기존 코드의 길이를 줄이고 가독성을 향상 시키기 위해 사용하려고 정리하는 글이다. (드디어) 🤓🤪
람다 함수란
람다 함수는 파이썬에서 간단한 함수를 빠르게 작성하기 위한 방법 중 하나다. 일반적인 함수를 정의하는 것보다 문법이 더 간결하며, 보통 한 줄로 표현된다.
람다 함수의 기본 구조
lambda arguments: expression
- lambda: 람다 함수를 정의하는 키워드
- arguments: 람다 함수에 전달할 인자를 나열. 쉼표로 구분되며, 여러 개의 인자를 사용할 수 있음.
- expression: 인자를 사용하여 계산되는 표현식. 이 표현식의 결과가 람다 함수의 반환값이 됨.
예시
1. 두 숫자를 더하는 람다 함수:
f = lambda x, y: x + y
print(f(2, 3)) # 출력: 5
2. 주어진 숫자의 제곱을 반환하는 람다 함수:
square = lambda x: x**2
print(square(4)) # 출력: 16
코드에서의 람다 함수 사용
기존 코드에서는 각 조건에 따라 실행할 특정 작업을 딕셔너리의 형태로 정의하였는데, 길이가 길고 가독성이 좋지 않아서 람다함수로 수정하였다.
# 기존 코드
if doc_text_list["e"] == 'text':
str_contents += doc_text_list["t"]
# 수정된 코드
'text': lambda: doc_text_list["t"]
`text` 조건일때 doc_text_list["t"] 값을 반환하는 람다 함수를 딕셔너리의 값으로 설정하는 코드이다.
딕셔너리의 `get`메서드를 사용하여 해당 조건에 대한 람다 함수를 가져와 실행하며, 그 결과를 str_contents 변수에 추가한다.
람다 함수를 사용하는 주요 이유는 코드의 간결성과 표현의 직관성 때문이다. 각 조건에 따른 작업을 딕셔너리 형태로 쉽게 정의하고 참조할 수 있기 때문에 코드의 가독성과 유지보수성이 향상된다.
최근에 python 으로 여러 코드들을 작성하고 사용하면서 느낀점인데, 개발이 용이하고 직관적이고 다양한 모듈을 사용할 수 있다는게 큰 매력이고 장점이지만 아무래도 다른 언어 대비 무거운 느낌이 없지않아있다. 특히 어제 MySQL 데이터 28만건 정도를 MongoDB로 마이그레이션했는데 이 과정에서 Python 으로 개발한 코드를 사용하였다. 속도는 크게 느리지않았지만, 메모리 사용률이 높아서 다른 작업에 조금 영향을 끼쳤다. 코드의 성능도 확인해봐야겠지만 Python 의 메모리 사용률이 그렇게 큰건 처음봐서 좀 놀랐다.
* 오늘의 결론: 역시 공부는 끝이 없고 파도 파도 새로울 뿐. 다시 보면 새롭고 지금은 맘에 드는 코드여도 나중에 보면 '이거 왜 이렇게 짰어'가 된다.