创建带有部分参数的 Python 函数
我想将一个 Python 函数传递给另一个函数,并提前“填写”它的一些参数。
这是我正在做的简化:
def add(x, y):
return x + y
def increment_factory(i): # create a function that increments by i
return (lambda y: add(i, y))
inc2 = increment_factory(2)
print inc2(3) # prints 5
我不想使用某种形式的 args
传递,然后用 *args
分解它,因为我传递的函数 inc2
into 不知道将 args
传递给它。
对于小组项目来说,这感觉有点太聪明了……有没有更直接或Pythonic 的方法来做到这一点?
谢谢!
I want to pass a Python function to another function with some of its parameters "filled out" ahead of time.
This is simplification what I am doing:
def add(x, y):
return x + y
def increment_factory(i): # create a function that increments by i
return (lambda y: add(i, y))
inc2 = increment_factory(2)
print inc2(3) # prints 5
I don't want to use some sort of passing of args
and later exploding it with *args
because the function I am passing inc2
into doesn't know to pass args
to it.
This feels a bit too clever for a group project... is there a more straightforward or pythonic way to do this?
Thanks!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
这称为柯里化或部分应用。您可以使用内置的 functools.partial()。像下面这样的东西就会做你想做的事。
This is called currying, or partial application. You can use the built-in functools.partial(). Something like the following would do what you want.
您还可以使用 lambda 函数完成相同的任务:
You could also accomplish the same with a
lambda
function: