python - 创建在原始函数中设置关键字参数的偏函数

标签 python arguments wrapper partial functools

不确定这是否可行,但我正在尝试从具有位置参数和关键字参数的函数创建部分函数。问题是,我希望生成的部分函数中的参数设置原始函数中的关键字参数之一 - 而不是其位置参数之一。

这是原始函数的定义:

def cost_function(self, X, y, weights=None, lambda_param=0.0):

我想要一个可以传递给 scipy.minimise 的部分函数,​​这样我就可以找到最佳权重值(权重是一个 ndarray)。

所以我需要的是只有一个参数(x 说)的偏函数:

例如

cost_func(x)

但我希望部分函数在调用原始函数时设置权重参数:

my_network.cost_function(X, y, weights=x, lambda_param=0.0)

(我知道我可以更改原始函数,以便 weights 参数是位置参数而不是关键字参数,但我不想这样做,因为我也想在没有设置 weights 参数的情况下使用该函数。

最佳答案

我认为 functools.partial 可以满足您的需求

看例子:

import functools
def cost_function(self, X, y, weights=None, lambda_param=0.0):
    print (weights)

cost_func = functools.partial(cost_function, None, 20, 30, lambda_param=2.0)


print (cost_func("Yay it worked!!!"))

关于python - 创建在原始函数中设置关键字参数的偏函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34832006/

相关文章:

php - 我从这里去哪里 - 关于编程?

python - 如何将单个 CSV 文件分割成多个按字段分组的较小文件并删除最终 CSV 中的列?

c# - 包装属性 setter

html - 帖子用完了

c - 为什么字符 # 在 argv 上为空

java - 如何在Java中为包装对象实现高效的哈希码?

python - 压缩不均匀的 numpy 数组

python - 将点云从 .txt 转换为 .ply

ruby-on-rails - Rails seeds.rb : How can I skip multiple callbacks using Class. skip_callback?

ios - 从 Swift 类在 Objective-C 类的类方法 (+) 中传递参数