python 람다(Lambda)
python에서는 람다(Lambda)라는게 있다
이는 간단하게 만들어 바로 사용하도록 하는것이다
아래는 일반함수이다
1 2 3 4 | def 일반함수(a = 1 ,b = 2 ): return a * b 일반함수( 10 , 2 ) |
아래는 람다를 사용한 함수이다
1 2 3 | 람다 = lambda a,b : a * b 람다( 10 , 2 ) |
위의 기능은 둘다 동일한 결과를 리턴하겠지만 Lambda를 사용하게 되면 간단하게 한줄로 표현할 수 있다
lambda를 사용하는 방법은 아래와 같다
lambda 인자 : 표현식 |
1 2 3 4 5 6 | sum = lambda a,b : a * b sum ( 10 , 2 ) def sum2(a = 1 ,b = 2 ): return a * b |
다시 위의 코드에서 살펴 보면 람다함수를 사용한 sum,sum2의 객체는 어떻게 나올까?
1 2 3 4 5 6 7 8 9 10 11 12 13 | Python 2.7 . 3 (default, Mar 18 2014 , 05 : 13 : 23 ) [GCC 4.6 . 3 ] on linux2 Type "help" , "copyright" , "credits" or "license" for more information. >>> sum = lambda a,b : a * b >>> sum ( 10 , 20 ) 200 >>> >>> def sum2(a = 1 ,b = 2 ): ... return a + b ... >>> globals () { '__builtins__' : <module '__builtin__' (built - in )>, 'sum' : <function < lambda > at 0x76c403b0 >, 'sum2' : <function sum2 at 0x76c403f0 >, '__package__' : None , '__name__' : '__main__' , '__doc__' : None } >>> |
위와 같이 sum과 sum2는 같은 function 객체를 취하는것을 알 수 있다 (같은 기능이라고 봐도 무관)
1 2 3 4 | >>> result = filter ( lambda x: x % 2 = = 0 , range ( 5 )) >>> print result [ 0 , 2 , 4 ] >>> |
위와같이 filter를 겹쳐서 사용할수도 있다
위의코드는 0부터4까지의 x중 2로 나눈 나머지가 0인 것들만 찾아내는 함수이다
*보통 range함수나 list와 같이 이터레이블한 상태를 사용하여 간단한 데이터연산에 사용을 한다
'프로그래밍 > Python' 카테고리의 다른 글
Python 시리얼 출력(serial 통신) (4) | 2015.07.24 |
---|---|
python using ocr(python을 이용하여 ocr, 이미지 프로세싱) (6) | 2015.07.05 |
Python 데코레이터(Decorator) (3) | 2015.05.30 |
Python virtualenv 사용법(MAC기준,pip사용) (4) | 2015.05.14 |
Python 이터레이터(iterator), 제너레이터(generator) (4) | 2015.03.23 |