Python/파이썬 기초

파이썬 lambda 이용 함수 선언 예제 : 인자/return 값 여러개, 기본 값 지정, if문 활용 등

jimmy_AI 2022. 5. 16. 20:59
반응형

파이썬 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를 이용하여 함수를 만드는 것을 권장드립니다.

해당 내용은 아래 글에 정리되어 있으니 참고하세요.

 

파이썬 def 함수 선언 case 총정리 (argument, return)

def로 파이썬에서 함수를 선언하는 경우는 원하는 기능을 반복 사용하는 경우 등에서 매우 간결한 코딩을 도와주는 핵심적인 기능입니다. 이번 글에서는 def로 함수를 선언하는 케이스에 대해서

jimmy-ai.tistory.com

이상으로 lambda를 이용한 함수 선언 케이스 정리에 관한 글을 마치겠습니다. 감사합니다.