람다 함수란?
람다 함수는 프로그래밍 언어에서 사용되는 개념으로 익명 함수 (Anonymous functions)를 지칭하는 용어이다.
람다 함수를 사용하면 정규 코드보다 더 간결하게 표현하여 가독성을 높일 수 있다.
하지만 람다 함수는 단점도 존재한다. 무분별한 사용은 오히려 가독성을 저하시키며
오류 발생시 TraceBack에서 유추할 수 없다. ( 아래 예제 참조 )
본 장에서 python 람다 함수를 사용하는 방법과 활용법에 대해 살펴본다.
python에서 람다표현식은 아래와 같다.
lambda arguments: expression
인자로 주어진 두개의 수를 더하는 함수를 기존방식으로 만들면 아래와 같다.
def sum(x, y):
return x + y
sum(5, 6)
Out[1]: 11
위 sum함수를 람다식으로 표현
sum = lambda x,y: x+y
sum(5, 6)
Out[1]: 11
위 람다 함수를 보면 x,y 는 함수 인자(parameters) 이고 , 로 인자를 계속해서 받을 수 있다.
x+y는 함수의 body 이다.
대화형 콘솔에 한해 직전에 선언한 lambda 함수를 _ (underscore)를 사용하여 호출 할 수 있다.
lambda x,y: x+y
_(2,4)
Out[1]: 6
즉시 실행 함수 표현(IIFE, Immediately Invoked Function Expression)
- Javascript와 같이 python lambda식 뒤에 ( parameters ) 를 주입하여 즉시 실행할 수 있다.
(lambda x,y: x+y)(2,4)
Out[1]: 6
lambda 함수의 단점, TraceBack 결과로 부터 어떤 함수에서 발생했는지 알 수 없다.
- lambda는 이름이 없는 익명함수로 존재한다. 이름이 없으므로 오류가 발생한 경우 함수 추적이 불가하다.
def div(x, y):
return x / y
div(2, 0)
Traceback (most recent call last):
File "<ipython-input-35-d4f2e18433d9>", line 1, in <module>
div(2, 0)
File "<ipython-input-34-88b44443e5b0>", line 2, in div # 함수 이름
return x / y
ZeroDivisionError: division by zero
(lambda x, y: x / y)(2, 0)
Traceback (most recent call last):
File "<ipython-input-33-74c5e19e3737>", line 1, in <module>
(lambda x, y: x / y)(2, 0)
File "<ipython-input-33-74c5e19e3737>", line 1, in <lambda> # lambda 로만 식별 가능
(lambda x, y: x / y)(2, 0)
ZeroDivisionError: division by zero
반응형
'python' 카테고리의 다른 글
Python - XML 파싱 오류 해결 ( xml.etree.ElementTree.ParseError ) (1) | 2020.12.07 |
---|---|
python - 타입 비교, 이런방식도 있었어? (0) | 2020.03.24 |
python - 디렉토리에 파일존재 유무 체크 ( open, os.path, pathlib ) (0) | 2020.03.07 |
python - 웹 스크래핑(크롤링) 기초 ( With Requests & BeautifulSoup ) (0) | 2020.01.31 |
python - 정규 표현식 사용법과 예제( validate IP, email, phone ) (0) | 2019.12.24 |