我正在尝试编写一个 python 函数(al),它会生成一个系列,例如
f(x) = 1 + x + x^2 + ... + x^n
给定系列中的术语数。(请记住,以上只是一个此类系列的示例。)我可以在某种程度上做到以下几点
def addTwoFunctions(f, g):
return lambda x : f(x) + g(x)
如果我现在以愚蠢的方式进行操作,它可以正常工作:
// initialize h as a function
h = lambda x : 0*x
print h(2) # output = 0
// first term in the series "1"
g = lambda x : x**0
h = addTwoFunctions(h, g)
print h(2) # output = 1
// second term "x"
g = lambda x : x**1
h = addTwoFunctions(h, g)
print h(2) # output = 3
// third term "x^2"
g = lambda x : x**2
h = addTwoFunctions(h, g)
print h(2) # output = 7
这会创建正确的输出(如注释所示)。但是,如果我把它放在一个 for 循环中
print h(2)
for i in range(3) :
g = lambda x: x**i
h = addTwoFunctions(h,g)
print h(2)
pass
它生成输出为
0
1
4
12
好像函数 h 在 for 循环中的每个条目处都加倍。我在这里做错了吗?
在此先感谢,尼基尔