티스토리 뷰

반응형

파이썬, 람다식

안녕하십니까 Hun!입니다!


오늘은 저번의 값으로 사용되는 함수에 이어서 파이썬에서 사용되는 람다(lambda)식에 대해서 소개드리고자 합니다. 먼저 람다식을 설명드리자면 '람다(lambda)'는 그리스 문자 'λ'를 의미하며 다양한 영역에서 의미를 내포하는 기호로 쓰이고 있습니다. 그리고 파이썬에서 함수에 사용되는 식이기도 합니다만 이 함수를 정의할 때 이름이 없어서 익명함수라고 불리기도 합니다. 람다 함수를 표현하는 방법은 'lambda' + 인수 + ':' + '인수를 받아서 최종으로 반환되는 값'과 같습니다. 지금까지 함수를 정의할 때와는 다른 점을 보실 수가 있으실 건데 그건 바로 'def'라는 예약어가 없다는 것입니다.  'def'와 함수의 이름, 인수를 헤더에 정의하고 아래의 함수 본문에는 함수 내용으로 실행되는 식들이 포함되어 있었지만 람다 함수의 경우에는 이름이 없어서 따로 혼자서 실행을 할 수가 없습니다. 그래서 대입을 해주거나 'def' 예약어로 정의한 함수 본문에 포함시켜주어야 합니다. 그 예시로 인수 두 개를 받아서 서로 곱한 다음에 반환하는 식인 "lambda x, y: x*y"을 람다 함수로 표현하여보았습니다. 


mult = lambda x, y: x*y



위가 바로 정의된 람다 함수를 이름에 대입한 모습입니다. 저번 시간에 함수는 값으로 작용하기 때문에 이름에 대입하였을 때 그 이름에서도 동일하게 작동한다고 하였습니다. 람다 함수도 마찬가지로 함수이기 때문에 동일한 작업을 수행하는 것을 보실 수가 있습니다. 'mult' 이름에 인수로 4와 7을 입력하여 'mult(4, 7)'을 실행하면 값으로 '28'이 나오는 것을 볼 수 있습니다. 그 다음으로는 'def'로 정의한 함수(미분함수)에 람다 함수가 포함된 모습을 예시로 보여드리겠습니다.


def cube(x):

    return x**3


def differential(f,x,dx):

    return (f(x+dx)-f(x))/dx


def differ(f,dx):

    return lambda x: differential(f,x,dx)


위에서 세 번째로 정의되어있는 'differ' 함수에 람다식이 표현되어있습니다. 저번 시간과 마찬가지로 'differ'함수는 세 개의 인수를 가지는 'differential'함수를 호출하는데 그 식이 람다로 되어있는 볼 수 있습니다. 이 'differ'함수를 실행하기 위해서는 또 대입방법을 사용하여야 하는데 "differOfCube = differ(cube,.00001)"와 같이 정의되지 않은 이름에 대입하여서 'differOfCube(2)'를 실행하면 3x²의 x에다가 2를 입력하여 계산한 값인 12와 비슷한 값이 연산되게됩니다. 일반적인 함수와 비교했을 때 람다식인 람다 함수를 잘 활용하면 코드를 가독성을 높여서 좀 더 깔끔하게 작성할 수 있는 장점이 있습니다. 그럼 이상으로 포스팅을 마치도록 하겠습니다.

반응형
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함