티스토리 뷰
python 에서 lambda 함수가 지원된다는 것을 대부분 알고 계실겁니다.
다만 이걸 어떻게 활용할 수 있는가 의문이 들긴 시작합니다. (초급개발자 대상)
이론적으론 1줄함수를 구현할 때 코드의 가독성을 높여준다 정도로 설명을 하는 곳이 많은데, 실제로 활용 될 수 있는 방법을 설명 할게요.
저 같은 경우는 python api 중 function을 인자로 받는 api에다가 함수+해당함수의 input param을 넘겨 줄 때 사용합니다.
예제를 한번 보도록 하겠습니다.
아래 코드는 아래 사진처럼 button 2개, text box 1개를 생성하는 코드입니다.
일반적으로 Button 함수에서 버튼을 눌렀을 때 실행되는 함수를 command= 인자로 받습니다.
다만 이때 함수는 인자값이 없어야만 tkinter button 함수 내부에서 처리가 가능합니다.
그러나.... 보통 function을 구현할 땐 인풋을 넣는 경우가 대부분 일겁니다. 이때 labmda를 이용한 트릭으로 인풋을 넣어 줄 수 있습니다.
buttonCommit2 를 보면 command=lambda: retrieve_input2(param1,param2) 를 사용한 것을 볼 수 있습니다.
x = lambda : retrieve_input2(param1,param2)
을 선언하면 x는 결국 인자값을 하나도 받지않는 (그러나 실제론 param1, param2를 input으로 받는) 람다함수 가 됩니다.
그러면 마치 button() 에서 x는 인자가 없는 함수처럼 동작이 되기 때문에, 정상적으로 button을 눌렀을 때 함수가 동작을 합니다. 그리고 실제로 우리는 x() 를 실행하면 retrieve_input2(param1, param2) 이 실행되게 되는 것이죠.
이 트릭으로 python api 에서 callback 함수를 등록해야 할 때, 콜백함수가 동작 할 때 우리가 원하는 parameter도 같이 전달이 가능해 집니다.
참고로 밑에 코드는 스택오버플로우에서 적당히 복붙 후 제가 수정한 코드인데, 원작자는 retrieve_input 안에서 textBox 를 글로벌 변수로 사용해서 parameter 를 받아들였네요. labmda를 쓰긴 했지만 정확히 어떻게 parameter를 넘겨주면 될지 방법을 잘 몰랐나 보네요 .........
파이썬 스크립트 및 코드 개발에 도움이 되시길 바랍니다.
'파이썬' 카테고리의 다른 글
[PYQT5] QT designer 에서 위젯 상속 받아 쓰기 (1) | 2018.05.27 |
---|---|
[pyqt5] fontcombobox 사용 예제 (2) | 2018.05.22 |
python code Editor in pyqt5 , view source line, syntax highlighting (0) | 2018.05.22 |
파이썬 exe 만들기, pyinstaller python (2) | 2018.05.22 |
cx_Freeze package 나 module 추가 법 (0) | 2018.05.22 |
- Total
- Today
- Yesterday
- SQ인증 #동양열처리 #시화공단 #안산 #시흥 #금속열처리 #열처리
- 파이썬
- python 실행환경 배포
- 파이썬배포
- 공유기설정
- iptime
- 가상환경
- 속도
- Python
- a1000 mini
- py 실행환경
- 파이썬 배포판
- 무선랜카드
- exe없이 파이썬 배포
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |