본문 바로가기
Python

[Python] Callback function

by ds31x 2023. 7. 13.

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

 


 

728x90