您能在Python中向函数对象传递参数吗?

您能在Python中向函数对象传递参数吗?,python,Python,为了便于组织,我在文件顶部列出了一个ML优化器,其中包含我的其余配置常量: optimizer = torch.optim.SGD() 要使用优化器,我必须传入稍后在代码中生成的模型参数 optimizer = torch.optim.SGD(model.parameters, lr=LEARNING_RATE) 是否有任何方法可以将参数传递到变量优化器 编辑: 我想我的问题不清楚,这里有一个简单的例子来说明我的问题: #take the square of some arbitrary

为了便于组织,我在文件顶部列出了一个ML优化器,其中包含我的其余配置常量:

optimizer = torch.optim.SGD()
要使用优化器,我必须传入稍后在代码中生成的模型参数

optimizer = torch.optim.SGD(model.parameters, lr=LEARNING_RATE)
是否有任何方法可以将参数传递到变量
优化器


编辑: 我想我的问题不清楚,这里有一个简单的例子来说明我的问题:

#take the square of some arbitrary number

fn = math.prod()
x = 5

#how to feed x into the variable fn?

听起来你是在问部分申请。这是一种将函数和一些参数“包装”到一个新的可调用函数中的方法,该函数使用更少(甚至没有)参数

>>> from functools import partial
>>> f = lambda x, y, z: x + y + z
>>> g = partial(f, 2, 3)
>>> g(4)
9
>>> h = partial(f, 1, 2, 3)
>>> h()
6
当然


我想出来了,看起来很简单,但我还是不说了,因为我在网上找不到它

您可以将参数传递给新变量,因为它现在与函数是同一个对象

optimizer(model.parameters, lr=LEARNING_RATE)

我不确定这是否正是您想要的,但我经常使用functools.partial将值绑定到参数

导入工具
optimizer=functools.partial(torch.optim.SGD,model.parameters,lr=LEARNING\u RATE)

然后,您可以将optimizer作为函数调用,它将具有第一个位置参数和“lr”关键字参数,并且您可以在调用optimizer时传递所需的任何其他参数。

是的,我找到了,但这正是我要寻找的。如果允许的话,我会接受的。向上投票
optimizer(model.parameters, lr=LEARNING_RATE)