Python 如何编写钩子

Python 如何编写钩子,python,hook,Python,Hook,我是胡克的新手,所以我需要一个建议。假设我有一个函数,将一些数据作为输入并生成一个绘图: def f(data, options): plot = produce_plot(data) apply_options(plot) # changing colors, style, ... export(plot, option.format) return plot 此函数不是由用户直接调用的,而是在循环内调用的,例如: data_categories = divide_i

我是胡克的新手,所以我需要一个建议。假设我有一个函数,将一些数据作为输入并生成一个绘图:

def f(data, options):
   plot = produce_plot(data)
   apply_options(plot) # changing colors, style, ...
   export(plot, option.format)
   return plot
此函数不是由用户直接调用的,而是在循环内调用的,例如:

data_categories = divide_in_category(data)
for d in data_categories: f(data, color=user_option.color, format='png')
现在,我想让用户能够根据需要对该绘图进行更多操作。假设用户想要添加一个标签并进行一些匹配,我认为一个好主意是提供一个钩子来访问函数f的内部。钩子应该在导出函数之前执行。问题:怎么做?如何在吊钩内提供f的内部构件

我无法将options参数作为options.do_fit、options.add_label等处理所有无限用例


然后用户可以使用他编写的函数名调用f,这将在plot上执行某些操作并返回一个新plot。

好的,我也可以将数据传递给钩子,但我想知道我是否可以更好地实现exampl的前向兼容性,例如,传递所有局部变量或提供更复杂的intereface。如果有人搜索python钩子:
def f(data, options, hook = None):
   plot = produce_plot(data)
   apply_options(plot) # changing colors, style, ...
   if hook is not None:
       plot = hook(plot)
   export(plot, option.format)
   return plot