Python/Basic

[Python] lambda 함수 사용

Ddolgom 2022. 11. 8. 14:59
반응형

Lambda 라는 함수가 있다. 

Lambda function(람다 함수)라는 말 말고도 Lambda expression(람다식)이라고도 한다.

 

간단히 말해서 이름없는 함수이다.

 

왜 이런 이름없는 근본도 없는(?) 함수를 쓰느냐? 간결하게 하기 위해서다

 

다음과 같은 함수가 있다고 가정하자.

 

>>> divmod(3.0,15.0)
>>> def greeting(a):
        print(a)
    
>>> post = greeting # greeting 이라는 함수는 ref가 참조하게 된다. 
>>> post('hi') # hi가 출력된다.
hi

greeting이라는 함수를 통해서 post라는 변수에 저장을 한뒤에 post함수에 hi라는 문자열을 넣으면 hi가 출력된다.

 

Lambda함수를 이용하여 한줄로 처리해 보겠다.

>>> greeting = lambda a : print(a) # 여기서 a는 임의로 넣었다. 문자열 어떤것이든 넣을 수 있다.
>>> greeting('hi')
hi

위와 똑같은 결과가 나온다.

 

매개변수가 2개인 경우도 잘 활용할 수 있다.

>>> f1 = lambda n1, n2 : (n1+n2) # 괄호 생략해도 무방하다.
>>> f1(3, 4)
7

다른 내장함수와 결합해서 사용

>>> length = lambda a : len(a)
>>> length('whereareyougoing?')
17

매개변수가 없어도 동작

>>> f3 = lambda : print('yes') # 매개 변수가 없다.
>>> f3()
yes

함수내 함수 구조의 코드를 간단하게 하는데에도 활용

>>> def 제곱(n):
>>>   def exp(x):
>>>     return x ** n
>>>   return exp

>>> f2 = 제곱(2) #제곱
>>> f3 = 제곱(3) # 실제 세제곱이다. 함수 이름만 제곱인 경우

>>> f2(4) # 4의 제곱
>>> f3(4) # 4의 세제곱

16
64

 

 

다음과 같이 이중함수로 짠 코드가 있다. 

Lambda 함수로 간결하게 작성이 가능하다.

 

# 위의 식을 lambda 함수로 간결하게 작성하기

>>> def 제곱(n):
>>>  return lambda x : x ** n 

>>> f2 = 제곱(2)
>>> f3 = 제곱(3)

>>> f2(4)
>>> f3(4)

16
64

똑같은 결과가 나온다.

 

매개변수와 인자를 한번에

>>> multi_cal = (lambda x, y, z : x*y*z) (1, 2, 3) # 매개변수와 인자가 한방에
>>> multi_cal
6

매개변수와 인자를 한번에 넣어서 함수값을 출력하는 방법도 있다.

 

람다함수는 이처럼 간결한 코드로 사용하기 위해서 하는 것이 목적이다.

반응형