如何从外部编写带有变量的函数?
希望您能提供帮助。我正在寻找一种编写稍后插入一个项目的函数的方法。让我给你看一个例子:
def general_poly(L):
"""
L, a list of numbers (n0, n1, n2, ... nk)
Returns a function, which when applied to a value x, returns the value
n0 * x^k + n1 * x^(k-1) + ... nk * x^0
"""
x = 1
res = 0
n = len(L)-1
for e in range(len(L)):
res += L[e]*x**n
n -= 1
return res
我以为我可以在x
这里提供一个值,一旦我general_poly(L)(10)
将其替换,那么x =
10
显然就不那么容易了。我必须更改/添加什么才能使我的功能正常工作?函数如何知道乘法是x
?谢谢你们的帮助!
-
系统要求您返回一个函数,但返回的是计算得出的值:
def general_poly(L): """ L, a list of numbers (n0, n1, n2, ... nk) Returns a function, which when applied to a value x, returns the value n0 * x^k + n1 * x^(k-1) + ... nk * x^0 """ def inner(x): res = 0 n = len(L)-1 for e in range(len(L)): res += L[e]*x**n n -= 1 return res return inner
现在
general_poly(L)(10)
将执行您期望的操作,但是如果将其分配给一个值,它可能会更有用,因此可以多次调用它,例如:L = [...] fn = general_poly(L) print(fn(10)) print(fn(3))
您还可以重写
inner
为:def general_poly(L): return lambda x: sum(e*x**n for n, e in enumerate(reversed(L)))