for循环中函数的奇怪行为

时间:2013-06-19 14:03:17

标签: python lambda

我正在尝试编写一个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循环中的每个条目处加倍。我在这里做错了吗?

提前致谢, NIKHIL

0 个答案:

没有答案