使用Python API“注册回调”这个短语的含义是什么?

时间:2013-04-10 18:05:19

标签: python python-3.x

我正在尝试深入了解如何设计Python 3 API,使用来自提供python 3.x解释器的应用程序中可用模块的API向UI添加元素时我被要求注册回调为了能够使用我的函数/脚本:“注册回调”是指从Cpython的角度来看是什么意思?

2 个答案:

答案 0 :(得分:5)

通常,这意味着您创建了一个函数:

def foo(some,arguments):
    pass #do something here

然后将该函数传递给提供的API中的某个类:

API_class_instance.register_callback(foo)

现在API_class_instance会在记录的情况下致电foo

答案 1 :(得分:4)

Callback

  

在计算机编程中,回调是一段可执行代码,它作为参数传递给其他代码,期望在某个方便的时候回调(执行)参数。调用可以像在同步回调中​​一样立即执行,也可以在以后执行,就像在异步回调中一样。

因此,如果您正在向UI API注册回调,那么您可能会将您创建的某个函数传递给另一个函数,该函数将在某些条件发生时负责调用您的函数。

例如,您可能在UI中有一个按钮,并且您希望在单击该按钮时执行某些代码。您可以注册一个类似于以下内容的回调:

def onclick():
    print 'Button clicked!'

# call the onclick() method when the 'click' event happens on the button
some_api.register_callback(button, 'click', onclick)

API代码可能如下所示:

# global variable containing callbacks
callbacks = {}

# API for registering callbacks
def register_callback(obj, event, callback):
    if obj not in callbacks:
        callbacks[obj] = {}
    callbacks[obj][event] = callback

# a function that is called when some event is triggered on an object
def process_event(obj, event):
    if obj in callbacks and event in callbacks[obj]:
        # this object/event pair has a callback, call it
        callback = callbacks[obj][event]
        callback()