람다 표현식(lambda expression)
: 이름 없는 함수를 만들기 때문에 익명 함수(anonymous function)이라고 부르기도 함
: 식 형태로 되어 있음
: 함수를 간편하게 작성할 수 있어서 다른 함수의 인수로 넣을 때 주로 사용
람다 표현식으로 함수 만들기
: 더하기 10 함수 만들기 - 람다 표현식X
: 더하기 10 함수 만들기 - 람다 표현식O
lambda 매개변수들: 식
람다 표현식 자체를 호출하기
(lambda 매개변수들: 식)(인수들)
람다 표현식 안에서는 변수를 만들 수 없다
: 반환값 부분은 변수 없이 식 한 줄로 표현할 수 있어야 함
: 변수가 필요한 코드일 경우에는 def로 함수를 작성하는 것이 좋음
: 바깥에 있는 변수는 사용할 수 있음
람다 표현식을 인수로 사용하기
: 람다 표현식을 사용하는 이유는 함수의 인수 부분에서 간단하게 함수를 만들기 위해서입니다.
- 이런 방식으로 사용하는 대표적인 예가 map입니다
: def
: lambda
- 함수를 다른 함수의 인수로 넣을 때 매우 편리함
람다 표현식으로 매개변수가 없는 함수 만들기
: 매개변수가 없는 함수를 만들 때는 lambda 뒤에는 아무것도 지정하지 않고 :(콜론)을 붙임
: 단, 콜론 뒤에는 반드시 반환할 값이 있어야 함(표현식은 반드시 값으로 평가되어야 하기 때문)
람다 표현식에 조건부 표현식 사용하기
lambda 매개변수들: 식1 if 조건식 else 식2
: map을 이용하여 리스트 a에서 3의 배수를 ★로 변환
- 3의 배수일 때는 '★'로 요소를 ★로 만들어서 반환
- 3의 배수가 아닐 때는 x로 요소를 그대로 반환
: 람다 표현식에서 if를 사용했다면 반드시 else를 사용해야 함
: 람다 표현식 안에서는 elif를 사용할 수 없음
: 따라서 조건부 표현식은 식1 if 조건식 else 식2 if 조건식 else 식3 형식처럼 if를 연속으로 사용해야 함
lambda 매개변수들: 식1 if 조건식1 else 식2 if 조건식2 else 식3
: 별로 복잡하지 않은 조건인데도 알아보기 힘들 경우에는
억지로 람다 표현식을 사용하기보다는 def로 함수를 만드는 것을 추천
map에 객체를 여러 개 넣기
map(lambda 매개변수1, 매개변수2: 식, 객체1, 객체2)
: 람다 표현식의 매개변수 개수에 맞게 반복 가능한 객체도 콤마로 구분해서 넣어주면 됨
filter 사용하기
: filter는 반복 가능한 객체에서 특정 조건에 맞는 요소만 가져오는데
filer에서 지정한 함수의 반환값이 True일 때만 해당 요소를 가져옴
filter(함수, 반복 가능한 객체)
: def
: lambda
reduce 사용하기
: 반복 가능한 객체의 각 요소를 지정된 함수로 처리한 뒤 이전 결과와 누적해서 반환하는 함수
: reduce는 파이썬3부터 내장 함수가 아니기 때문에 functools 모듈에서 reduce 함수를 가져와야 함
from functools import reduce
reduce(함수, 반복 가능한 객체)
: def
: lambda
: reduce x + y 동작
'Python > python' 카테고리의 다른 글
클래스 (0) | 2020.10.19 |
---|---|
클로저 사용하기 (0) | 2020.10.19 |
함수에서 재귀호출 사용하기 (0) | 2020.10.19 |
함수에서 위치 인수와 키워드 인수 사용하기 (0) | 2020.10.16 |
함수 사용하기 (0) | 2020.10.16 |