如何指定关键字参数重定义函数并构建字符串键-函数值字典?
解决方法
你的问题在于直接调用了函数并把返回值存入字典,而不是存储绑定了指定参数的函数对象。下面提供两种可行的实现方式:
方法1:使用functools.partial(推荐)
functools.partial是Python标准库工具,专门用于固定函数的部分参数,生成一个可直接调用的新函数对象:
from sklearn import metrics from functools import partial # 固定average='weighted'参数,生成新的可调用对象 my_dict = { 'weighted_roc_auc': partial(metrics.roc_auc_score, average='weighted') } # 调用时只需传入剩余必要参数(比如y_true和y_score) # result = my_dict['weighted_roc_auc'](y_true, y_score)
方法2:使用lambda表达式包装
如果只是固定少量参数,也可以用lambda快速包装:
from sklearn import metrics my_dict = { 'weighted_roc_auc': lambda y_true, y_score: metrics.roc_auc_score(y_true, y_score, average='weighted') } # 调用方式同上 # result = my_dict['weighted_roc_auc'](y_true, y_score)
注意事项
- 不要在字典赋值时直接调用函数(比如你之前写的
metrics.roc_auc_score(*args, average='weighted')),这会立即执行函数并把结果存入字典,而非函数本身。 - 使用lambda时,要确保参数列表和原函数的剩余必填参数匹配,避免调用时出现参数错误。
内容的提问来源于stack exchange,提问作者inarighas
相关产品推荐
相关产品推荐

