假设我有一个函数
def f(x,y):
return x+y我想创建一个函数,它返回一个传递了特定变量的函数:
def G(f,n,q): #a function in which the n-th variable of function f is passed the value q
return ??问题是:我应该如何定义G
例如,G(f,0,1)应返回函数f,其中向变量0传递的值为1。换句话说,G(f,0,1)的行为应该像g一样,我的定义是
def g(x):
return f(1,x)发布于 2017-03-11 18:08:51
在这种情况下,您可以构造一个构造函数的函数。像这样:
def G(f,n,q):
def h(*args):
ls = list(args)
ls.insert(n,q)
return f(*ls)
return h因此,您构造了一个以任意数量的元素*args作为输入的函数h。然后将其转换为list(..),这样就可以更改列表。接下来,将给定的参数q作为索引n插入到列表中,并将带有星号的列表传递给给定的函数f。
发布于 2017-03-11 18:08:51
下面是一个更小、更简单、相关的工作示例。通常,您可能希望阅读有关python装饰器和分部函数的内容。
>>> def power(x):
... def foo(y):
... return y**x
... return foo
...
>>> square = power(2)
>>> cube = power(3)
>>> square(2)
4
>>> square(3)
9
>>> cube(2)
8
>>> cube(3)
27
>>> 发布于 2017-03-11 18:12:36
您可以查看functools模块。
例如,使用partial方法可以执行以下操作:
from functools import partial
def G(f, n, q):
return partial(f, n=q)这将用q替换名为n的关键字参数
您也可以替换位置参数,但它们必须按顺序排列:
from functools import partial
def G(f, n, q):
return partial(f, q)这会将第一个参数替换为q
https://stackoverflow.com/questions/42733803
复制相似问题