美文网首页
python回调函数

python回调函数

作者: 日月神父 | 来源:发表于2018-08-10 15:45 被阅读0次

通常在实际应用中有人写的框架中包含了一个回调函数,需要我们传入一个函数作为参数(这种方式不是面向切面的编程,这个我们暂且不论框架设计的问题),回调函数是不带参数的,但我们开发的函数由于复用的需要设计了函数参数,那么问题来了,如何把我们设计的函数传给框架中作为回调呢?

框架代码如下:

class Framework:
    def __init__(self, callback):
        self.callback = callback

    def run(self):
        self.setup()
        # 框架中并未对回调函数传参数
        self.callback()
        self.teardown()

    def setup(self):
        pass

    def teardown(self):
        pass

我们设计的函数是带参数的,比如

def your_function(level, message):
    print(level, message)

这样我们需要为重新定义函数来满足框架中的回调吗?怎么做?

  1. 使用闭包
# 方法一 使用闭包
def configured_wrapper_logger(level, message):
    def _configured_logger():
        your_function(level, message)

    return _configured_logger
  1. 使用lambda
# 方法二,使用lambda
configured_lambda_logger = lambda: your_function(logging.ERROR, "ERROR logger")
  1. 使用class的call
# 方法三 使用class __call__
class ConfiguredLogger:
    def __init__(self, level, msg):
        self.level = level
        self.msg = msg

    def __call__(self):
        your_function(self.level, self.msg)

这三种方式都可以复用自定义函数的前提下,方便的传递给框架

相关文章

  • mqtt python包回调分析

    mqtt的python包,回调函数比较复杂,每次在连接之前,需要先实现回调函数,回调函数的传入参数固定 将回调函数...

  • python 处理多线程返回值

    python线程池有一个回调函数,可以通过回调函数处理线程返回值,线程池的回调函数默认有一个 workWorkRe...

  • 理解 Python 装饰器与回调函数

    1.理解 Python 装饰器2.Python装饰器和回调函数回调函数就是一个通过函数指针调用的函数。如果你把函数...

  • python回调函数

    通常在实际应用中有人写的框架中包含了一个回调函数,需要我们传入一个函数作为参数(这种方式不是面向切面的编程,这个我...

  • python回调函数

    散了,这里我多说了直接上代码了。导入time,模拟延时效果 创建callback函数 创建延时函数 调用,查看效果

  • Python 回调函数

    所有的进程调用test2函数,test2 输出test1对应进程里的数据 输出结果

  • Python回调函数

    回调函数什么时候用?(回调函数在爬虫中最常用) 造数据的非常耗时 处理数据的时候不耗时 你下载的地址如果完成了,就...

  • JavaScript函数_08回调函数

    回调函数 回调函数(回调),当我们把某个函数作为参数传递给另一个函数的时候,这个函数就是回调函数 回调函数的基本写...

  • Promise

    回调 把一个函数A传给另一个函数B调用,那么A就是回调函数。 回调地狱 回调套回调套回调套回调套回调套回调套回调....

  • Python 调用dll Part2

    第二部分主要介绍将 Python 函数做为回调函数传给dll的方法。 实现回调注册的原理,主要是通过ctypes....

网友评论

      本文标题:python回调函数

      本文链接:https://www.haomeiwen.com/subject/lhpftftx.html