티스토리 뷰
이전에 정렬을 하면서 잠깐 짚고 넘어갔던 람다 함수에 대해서 심도있게 알아보겠다.
파이썬에서는 이름이 없고 함수 객체만 존재하는 익명함수를 만들 수 있다. 일반함수와 마찬가지로 필요한곳 어디에서나 쓰일 수 있는 함수이고, 여러개의 전달받을수 있으며 리턴 구문을 적지 않아도 하나의 반환괎을 돌려 줄 수 있다. 바로 람다(lambda) 함수에 대한 설명인데, 람다함수는 한줄을 실행한 결과 값이 바로 반환값이 된다.
람다 함수는 한줄의 간단한 함수가 필요한 경우나 프로그램의 가독성을 위해 함수를 인자로 넘겨줄때 쓸 수 있다.
예제를 통하여 한번 살펴보겠다.
문제. 입력받은 값의 두배를 출력하는 함수를 만들어서 리스트의 값을 모두 출력해 보시오.
1 2 3 4 5 6 7 | def makeDouble(n): return n*2 a = [1, 3, 5] for i in a: print(makeDouble(i), end=' ') | cs |
간단하게 이와 같은 형식으로 함수를 만들 수 있지 않을까? 그런데 함수의 길이가 굉장히 짧은데 이를 더 편하게 사용할 수 있는 방법이 없을까?
1 2 3 4 | t1 = makeDouble for i in a: print(t1(i), end=' ') | cs |
이와 같이 t1에 함수자체를 저장하는 방법이 있다. t1을 사용하면 makeDouble함수를 사용하는것과 똑같이 사용할 수 있다. 마치 C언어에서 함수 포인터를 사용하는것과 같지만 실제로는 매크로를 사용하는것과 더 유사하다.
1 | print((lambda n: n*2)(i), end=' ') | cs |
다음으로 알아볼 형식이 앞서 설명한 람다 함수인데, 이와 같이 한줄로 매개변수를 입력받고 반환값을 전달할 수 있다.
위 코드를 통해서 이야기 하자면 n을 전달인자로 받아서 n*2를 반환한다는 뜻이고 i값을 n으로 보낸다는 뜻이다. 위 코드도 이전에 사용했던 방식과 같이 함수 이름을 저장해서 사용할 수 있다. 사실 이전에 보여준 t1 = makeDouble 과 같은 형식은 잘 사용하지 않는다 왜냐하면 정의된 함수 이름을 불러서 호출할 수 있기 때문에 굳이 별명을 붙여줄 필요가 없기 때문이다. 하지만 람다함수는 코드의 가독성을 위해서 종종왕왕 사용하기도 한다.
람다함수는 파이썬 뿐만이 아니라 다른 언어에서도 통용되는 문법이기 때문에 잘 숙지해놓는것이 좋겠다.
'파이썬' 카테고리의 다른 글
파이썬 : DJango를 이용하여 파이썬으로 데이터베이스 서버를 가상환경에서 구동해보자 (2) | 2015.05.23 |
---|---|
파이썬 예제 : 리스트 내장(List Comprehension) (0) | 2015.05.20 |
파이썬의 포인터 (2) | 2015.05.19 |
파이썬 예제 : 튜플(Tuple)을 정렬(Sort)하는 여러가지 방법 (1) | 2015.05.19 |
파이썬 예제 : 리스트를 정렬(Sort)하는 여러가지 방법 (2) | 2015.05.19 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
TAG
- 파이썬예제
- 프로세스
- Sort
- UML
- C
- 소켓
- 라즈베리파이
- 클라이언트
- 악보
- 터미널
- 자료구조
- 소켓 프로그래밍
- 클래스
- socket
- 디렉터리
- 액터
- 안드로이드
- 쓰레드
- 데이터베이스
- 파이썬
- C++
- 리눅스
- 티그널
- C/C++
- 정렬
- 스레드
- 유즈케이스
- 파일
- MFC
- 티라노 시그널
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함