我是新手,所以我需要一个建议。假设我有一个函数将一些数据作为输入并生成一个图:
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
的内部。钩子应该在export
函数之前执行。问题:怎么做?如何在钩子里面提供f
的内部结构?
我无法处理options
参数为options.do_fit
,options.add_label
的所有无限用例,...
答案 0 :(得分:0)
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
然后用户可以使用他编写的函数的名称调用f,这将在绘图上执行某些操作并返回新的绘图。