파이썬 람다 함수는 간단하게 함수를 코딩할 수 있는 방법입니다. 함수 정의와 리턴을 명시하지 않아도 되기 때문에 한 줄로 작성할 수 있습니다. 익숙해지면 굉장히 편리한 방법이니 잘 익혀두는 것이 좋습니다. 파이썬 람다(lambda) 익명 함수 작성하는 방법을 알아보겠습니다.

 

 

파이썬에는 파이썬만의 독특한 문법이 있습니다. 특별한 생각이 없이 코딩을 하다보면, 비효율적으로 코드를 작성할 수 있습니다. 코드도 길어지고 내용도 지저분하며 시간이 오래 걸리는 경우가 있습니다. 다른 사람들은 코드를 어떻게 작성했나 보면, 비슷한 내용의 코드를 훨씬 간결하고 깔끔하게 작성한 경우가 있습니다. 하지만 중간에 알 수 없는 문법들이 있어서 혼란스러울 때도 있는데요. 저는 람다 lambda 익명 함수가 이런 것 중의 하나였습니다.

 

x를 입력값으로 받아 3을 리턴해주는 함수를 아래와 같이 작성했다고 하겠습니다.

 

def plus(x):
    return x+3
 
result=plus(3)
 
print(result)

 

이와 같은 함수를 lambda 함수로 정의하면, 아래와 같이 사용할 수 있습니다.

 

a =lambda x : x+3
result=a(3)

print(result)

 


lambda 함수는 x가 input이 되고, ":" 뒤에 잇는 수식을 계산해서 값을 리턴해 줍니다. 여기서는 인자값을 하나만 넣었지만, 함수와 동일하게 2개, 3개... 그 이상도 넣을 수 있습니다.

 

lambda 함수는 수식 계산뿐만 아니라, if문을 활용한 분기에도 사용할 수 있습니다.

(lambda x : True if x % 3 ==0 else False)

(lambda x : True if x % 3 ==0 else False)(6)

 

lambda에 함수 입력값을 넣을 때는 위와 같이 뒤에 괄호를 사용해서 넣어준다. 나머지 연산을 통해서 3의 배수인지 알려주는 코드입니다. 6을 3으로 나눈 나머지는 0이기 때문에 True가 출력됩니다.

 

 

그동안 작성한 코드에서 lambda를 이용하여 효율적으로 코딩할 수 있는 부분이 있는지 한 번 찾아보았습니다.

 

sale_profit_ratio=71.7777
temp_list=list()
sale_profit_ratio = round(sale_profit_ratio, 1)

temp_list.append(sale_profit_ratio)

 

lambda를 활용하여 코드를 효율적으로 짤 수 있는 부분이 많을 거라고 생각했는데, 생각보다 찾기가 어려웠는데요. 위에 코드는 dart api를 이용해서 회사의 매출 총이익률을 구하는 코드인데, 매출 총이익률은 71.7777로 나왔다고 가정하고 코드를 수정해 보았습니다.

 

뒤에 2줄을 lambda 함수를 이용하면 아래와 같이 수정할 수 있습니다.

sale_profit_ratio=71.7777
 
temp_list=list()
 
temp_list.append( (lambda x: round(x,1))(sale_profit_ratio) )

 

코드를 이해하기는 더 어려워졌지만, 한 줄로 깔끔하게 작성할 수 있었습니다. self를 인자 값으로 받는 함수인 경우에는 lambda 뒤에 입력값을 넣지 않고 사용해도 됩니다.

 

lambda함수 외에 컴프리헨션 문법을 이용하면 속도도 빠르고, 코드도 깔끔하게 작성할 수 있습니다. 컴프리헨션 문법에 대해서도 다루었으니 참고하시기 바랍니다.

  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기