可以在Python中将参数传递给函数对象吗?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了可以在Python中将参数传递给函数对象吗?相关的知识,希望对你有一定的参考价值。

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

optimizer = torch.optim.SGD()

要使用优化器,我必须传递稍后在代码中生成的模型参数

optimizer = torch.optim.SGD(model.parameters, lr=LEARNING_RATE)

我有什么方法可以将参数传递给变量optimizer

答案

当然!

>>> def add(x, y):
...    return x+y
... 
>>> z = add
>>> z(1,1)
2
另一答案

听起来您正在询问部分申请。这是一种将函数和一些参数“包装”到一个新的可调用对象中的方法,该方法需要较少(甚至不需要)参数。

>>> 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将值绑定到参数。

import functools

optimizer = functools.partial(torch.optim.SGD, model.parameters, lr=LEARNING_RATE)

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

以上是关于可以在Python中将参数传递给函数对象吗?的主要内容,如果未能解决你的问题,请参考以下文章

在python 3中将参数传递给exec

在 boost::thread 中将参数传递给函数

我可以在 Pig 脚本中将参数传递给 UDF 吗?

在页面模型中将参数传递给 TestCafe 选择器

我可以绕过将 self 对象传递给 python 类方法吗?

如何在一个条目中将RGB作为单独的参数传递给函数