python如何实现callback

我用了一个python动态加载模块的方法,做了一个callback。也可以改写为加载多个插件。不多说 上代码

# coding:utf-8
import os, os.path, sys

'''callbackTest.py'''
class MyApp:

    _callbackList = []
    def __init__(self):
        #         scriptDir = os.path.join ( os.path.dirname(os.path.abspath(__file__)), "plugin" )
        callbackDir = "XXXX/callback"   #绝对路径
        print callbackDir
#         将模块路径加到当前模块扫描的路径里
        sys.path.insert(0, callbackDir)
        for plug in os.listdir(callbackDir):
#             print "plug: ",plug[-3:]
            if (plug[-3:].lower() == ".py"):
                print "__import__ ", os.path.basename(plug)[:-3]
                m = __import__(os.path.basename(plug)[:-3]) #这里是关键步骤,动态import类
                self._callbackList.append(m.CallbackModule())

    def updateData(self):
        self.runStart()
        print "更新数据"
        self.runEnd()

    def runStart(self):
        for p in self._callbackList:
            p.start()

    def runEnd(self):
        for p in self._callbackList:
            p.end()

if (__name__ == "__main__"):
    app = MyApp()
    app.updateData()

下面是callback目录中的两个例子
第一个例子,在方法执行前后打印日志

# coding:utf-8
'''log.py'''
class CallbackModule(object):

    def start(self):
        print "log函数开始前调用该方法: ", "记录开始更新数据"

    def end(self):
        print "log函数结束后调用该方法: ", "记录更新完毕"

第二个例子

# coding:utf-8
'''progress.py'''
import datetime
class CallbackModule(object):

    today = datetime.datetime.now()
    def start(self):
        print "progress函数开始前调用该方法: ", datetime.datetime.strftime(self.today, '%Y-%m-%d %H:%M:%S')

    def end(self):
        print "progress函数结束后调用该方法: ", datetime.datetime.strftime(self.today, '%Y-%m-%d %H:%M:%S')
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Python中的回调函数是指在某个函数执行完成后,调用另一个函数来处理结果的机制。通过回调函数,我们可以实现异步操作、事件处理和数据传递等功能。在上面的引用中,展示了几种使用回调函数的方式。 首先,引用中的代码展示了使用闭包和协程来实现回调函数。闭包是指内部函数可以访问外部函数的变量,因此可以在回调函数中访问外部的变量。而协程则可以实现异步操作,通过生成器的方式来实现回调函数的执行。 其次,引用中的代码展示了使用绑定方法来代替简单函数作为回调函数的方式。绑定方法是指类的方法可以访问类的实例变量,因此可以在回调函数中访问类的实例变量或特定环境的变量值。 最后,引用中的代码展示了在Python Flask服务中使用回调函数的例子。通过安装并执行源文件,可以使用asyncio库处理子流程。 总结来说,Python中的回调函数可以通过闭包、协程和绑定方法等方式来实现。这些方式可以让我们在函数执行完成后,灵活地处理结果和执行其他操作。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [Python——回调函数(callback)](https://blog.csdn.net/weixin_41605937/article/details/120248917)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [python-callback-sample:Python + Flask +服务员+后台任务](https://download.csdn.net/download/weixin_42097557/15273270)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值