파이썬 lambda 사용법 정리
파이썬에서 lambda를 이용하여 함수를 만드는 예제들을 정리해보며
기본적인 사용법과 인자나 반환 값이 여러개인 케이스, 기본 값을 지정하고 싶은 경우,
조건문을 포함하고 싶은 케이스 등에서 lambda를 활용하는 방법을 살펴보겠습니다.
lambda 기본 사용 케이스
lambda의 기본적인 사용법은 lambda 사용할 변수 : 반환할 값 형태의 문법입니다.
이해를 돕기 위해 숫자 1개를 받아 2배를 취한 값을 돌려주는 함수 func1을 생각해보겠습니다.
lambda를 이용하여 다음와 같이 함수를 작성할 수 있습니다.
func1 = lambda x : 2 * x
a = func1(5) # 10
b = func1(-3.5) # -7
여기서 lambda a : 2 * a 처럼 꼭 x가 아닌 다른 변수이더라도 무방하며,
위의 코드 첫 줄에서 선언한 방식은 아래의 def 이용 함수 선언 코드와 거의 동일합니다.
def func1(x):
return 2 * x
lambda에서 인자나 반환 값이 여러개인 경우
여러 개의 인자를 가지는 함수를 선언받고 싶다면 lambda에서 : 전에
변수 여러개를 콤마(,)로 구분해주시면 됩니다.
func2 = lambda x, y : 2 * x + y
c = func2(3, 7) # 13(x = 3, y = 7로 인식)
d = func2(y = 1, x = 0) # 1(이런 식으로도 사용 가능)
# 아래 선언 방식과 동일한 결과
def func2(x, y):
return 2 * x + y
만일, return 받을 값이 여러개라면 이번에는 : 뒤의 부분에서
반환 받을 값을 순서대로 튜플로 지정해주시면 됩니다.
def와는 달리 단순히 콤마로만 return 값들을 구분하면 안된다는 점에 유의해주세요.
func3 = lambda x : (2 * x, 3 * x)
# 참고 : 이렇게는 사용 불가
# func3 = lambda x : 2 * x, 3 * x
e, f = func3(2) # e = 4, f = 6
# 아래 선언 방식과 동일한 결과
def func3(x):
return 2 * x, 3 * x
lambda에서 default 값을 지정하고 싶은 경우
def 선언 방식과 마찬가지로 lambda에서도 인자의 기본 값을 지정할 수 있습니다.
: 앞의 선언 부에서 변수 = 값 형태로 지정해주시면 되는데, 다만 def와 마찬가지로
기본 값이 없는 필수 인자들이 먼저 전부 등장한 뒤에 default 값이 있는 변수를 설정해야 합니다.
func4 = lambda x, y=2 : x + y
# 참고 : 이렇게는 사용 불가
# func4 = lambda x=2, y : x + y
g = func4(3) # 5(x = 3, y = 2)
h = func4(3, 4) # 7(x = 3, y = 4)
# 아래 선언 방식과 동일한 결과
def func4(x, y=2):
return x + y
lambda 내에서 if문 등의 조건문을 사용하고 싶은 경우
lambda 내에는 두 줄 이상의 복잡한 문법을 넣는 것은 추천드리지 않지만,
간단한 조건문 등을 넣는 것은 가능합니다.
lambda 내에서 인자의 조건에 따라 다른 값을 반환하게 함수를 만든 케이스는 아래와 같습니다.
func5 = lambda x : 2 * x if x > 0 else 10 * x
i = func5(4) # 8
j = func5(-2) # -20
# 아래 선언 방식과 동일한 결과
def func5(x):
if x > 0:
return 2 * x
else:
return 10 * x
한 줄에 함수 내부의 실행 코드를 모두 적어낼 수 있는 문법이라면
lambda와 def 모두 해당 기능을 수행하는 함수를 선언할 수 있습니다.
그러나, 복잡한 문법이 필요하다면 def를 이용하여 함수를 만드는 것을 권장드립니다.
해당 내용은 아래 글에 정리되어 있으니 참고하세요.
이상으로 lambda를 이용한 함수 선언 케이스 정리에 관한 글을 마치겠습니다. 감사합니다.
'Python > 파이썬 기초' 카테고리의 다른 글
파이썬 소요 시간 측정 방법 : time.time() 활용과 %timeit (0) | 2022.05.16 |
---|---|
파이썬 리스트 정렬 함수 sort()와 sorted()의 사용법 정리, 차이 비교 (0) | 2022.05.15 |
파이썬 del 명령어의 기능, 자료형별 사용 예제 정리 (0) | 2022.05.12 |