Callback Function
callback function란 다음 두가지에 해당하는 function을 의미한다.
- 다른 function의 argument로 전달되어
- 특정 event가 발생시 호출이 이루어지는 function을 가르킨다 (사용자가 명시적으로 호출하지 않음).
Python에서 대표적인 callback은
map
,filter
등의 function의 첫번째 argument로 주어지는 함수이다.- 이들은 두번째 argument인
iterator
가 iteration을 할 때마다 호출되어 각 item에 대해 처리를 수행하게 된다.
2023.07.07 - [Python] - [Python] lambda expression and map, filter, reduce.
[Python] lambda expression and map, filter, reduce.
Python 에서 lambda function (or lambda expression)은 anonymous function(익명함수)를 만드는데 사용됨. function 형태로 code구현의 재사용을 해야하긴하지만, def문등을 이용하여 만들기에는 너무 간단한 경우 등
ds31x.tistory.com
GUI에서의 event handler들도 대표적인 callback의 예이다.
- 특정 event에 호출되도록 등록시킬 때, callback function들은 argument로 넘겨지며,
- 사용자가 button등을 클릭하는 등의 특정 event 발생시 등록된 callback함수가 호출된다.
Python GUI Toolkit인 PySide에서 matplotlib의 figure를 사용하면서 event처리시 callback함수를 사용한다.
2024.05.19 - [Python/PySide PyQt] - [PySide] FigureCanvas.mpl_connect
[PySide] FigureCanvas.mpl_connect
FigureCanvas.mpl_connect FigureCanvas 클래스는Matplotlib 이 이용하여 그려진 그래픽 요소와의 interaction(상호작용)을 위한 event handling을 구현하기 위해,mpl_connect method를 제공함.더보기Matplotlib는 wypython, tkint
ds31x.tistory.com
또한, computer vision 라이브러리로 유명한 openCV에서 mouse event를 처리하는 방식도 callback 함수를 이용한다.
https://dsaint31.me/mkdocs_site/DIP/cv2/ch00/dip_0_03/
BME228
Mouse as a Paint-Brush 이 문서의 코드는 cv2.imshow가 가능한 local 서버에서 동작하는 jupyter note 등을 대상으로 구현됨. colab 이나 원격지 서버에서 동작중인 jupyter note등에서는 동작하지 않음. Goal OpenCV
dsaint31.me
callback이라는 용어의 유래는
- 일반적으로 개발자가 만든 사용자 정의 function (or code)에서 프로그래밍 언어에서 제공하는 function이 호출되는 것이 올바른 방향인데,
- 이와 반대로 프로그래밍 언어에서 제공하는 함수에서 사용자 정의 function이 호출되는 경우가 callback으로
- 호출의 방향이 반대라는 의미에서 callback이라는 용어가 주어졌다고 한다.
또는 callback 함수의 경우, 실제 사용자가 명시적으로 호출하지 않고 뒤에서 event등에 의해 호출되기 때문에 callback이라는 이름이 붙어다는 애기도 있다.
- Python의 special method와 비슷하다. (개발자가 호출을 명시적으로 하지 않는다는 점에서...)
2023.07.13 - [Python] - [Python] special methods and operator overloading
[Python] special methods
Python interpreter에 의해 간접적으로 호출되는 methods를 가르킴. 특징으로 double underscore __ 로 이름이 시작되고 끝난다. double underscore로 싸여있는 이름은 Python이 다른 syntax와 연결되어 사용되도록 미
ds31x.tistory.com
대부분 유래에 대한 이야기는 진위 파악이 쉽지 않다.
대신 이해가 빠르게 되면서 기억하는데 도움이 되는 것을 취하면 된다. ^^;;
같이보면 좋은 자료들
2023.10.06 - [Pages] - [Python] function 과 Scope, Name Space 정리
[Python] function 과 Scope, Name Space 정리
Function이란? https://dsaint31.me/mkdocs_site/CE/ch05/ch05_02_01_function/ BME228 Function in the Programming Mathematics에서의 function과 약간의 차이점이 있으나 프로그래밍에서의 function은 많은 부분에서 Mathematics에서의
ds31x.tistory.com
'Python' 카테고리의 다른 글
[Python] Nested Function (0) | 2023.07.15 |
---|---|
[Python] first-class object (일급객체) (0) | 2023.07.15 |
[Python] overloading, overriding, and special methods (0) | 2023.07.13 |
[Python] special methods and operator overloading (0) | 2023.07.13 |
[Python] list (sequence type) : summary (0) | 2023.07.12 |