Python3 装饰器实现回调机制

 

  昨天突发奇想,试试做一个回调机制。翻了下参数化装饰器的资料,写了个玩具:

  

 1 # 2019-5-23
 2 
 3 
 4 def callback(func_2=None, *args_, **kwargs_):
 5     """
 6     三层嵌套, 第一层callback是工厂, 获取func_2和它的参数
 7     decorator和inner就是正常的装饰器, 捕获func_1及其参数.
 8 
 9     :param func_2:      The callback function.
10     :param args_:       Parameters of func_2.
11     :param kwargs_:     Parameters of func_2.
12     :return:
13     """
14     def decorator(func_1):
15         def inner(*args, **kwargs):
16             res = func_1(*args, **kwargs)
17             if func_2 != None:
18                 func_2(*args_, **kwargs_)
19             return res
20         return inner
21     return  decorator
22 
23 # =============================== examples
24 
25 def func_2(strg: str):
26     print("zhizhi", strg)
27 
28 @callback(func_2, "guagua")
29 def func_1():
30     print("miaomiao")
31 
32 @callback(lambda x: print("-".join(x)), ["apple", "banana", "peak", "nut"])
33 def func_3():
34     print("a a a a")
35 
36 
37 func_1()
38 print("-" * 20)
39 func_3()

  输出为:

miaomiao
zhizhi guagua
--------------------
a a a a
apple-banana-peak-nut

Process finished with exit code 0

  

转载于:https://www.cnblogs.com/Tsuko/p/10911689.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python Dash中,可以使用回调装饰器来调用自身函数(self)。回调装饰器是一种装饰器模式,在Dash应用程序中使用它可以简化代码,增加可读性和可维护性。 当我们需要在Dash应用程序中使用回调函数时,可以使用`@app.callback`装饰器来定义回调函数,并将其与对应的输入和输出组件进行绑定。 首先,我们需要导入Dash库和回调装饰器: ``` import dash from dash.dependencies import Input, Output ``` 然后,创建Dash应用程序的实例: ``` app = dash.Dash(__name__) ``` 接下来,我们可以使用回调装饰器来定义回调函数。例如,我们定义一个简单的文本框和输出组件,当用户在文本框中输入内容时,输出组件会实时更新为输入的内容: ``` @app.callback( Output('output', 'children'), [Input('input', 'value')] ) def update_output(value): return value ``` 在上述示例中,`@app.callback`装饰器将`update_output`函数绑定到名为`output`的输出组件和名为`input`的输入组件上。`value`参数代表输入组件的值,`update_output`函数的返回值将作为输出组件的内容。 通过这种方式,我们可以在回调函数中调用自身函数。例如,我们可以在`update_output`函数中添加一些逻辑,根据输入的值进行判断并调用自身函数。 注意,为了防止无限递归调用,我们需要确保在适当的时候退出递归。可以使用条件语句或其他控制结构来实现这一点。 总而言之,Dash回调装饰器提供了一种方便的方式来定义和绑定回调函数。通过使用这些装饰器,我们可以在Dash应用程序中调用自身函数,并实现更复杂的交互功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值