为什么python lambda表达式在for循环中不能正常工作?

时间:2016-06-20 16:54:30

标签: python loops lambda

我想使用调用另一个函数的lambda表达式覆盖对象的方法:

class thing:
    def __init__(self, id):
        self.id=id

    def function():
        pass

def sum(x,y):
    return x+y

a=thing('friend')
b=thing('buddy')

a.function = lambda: sum('hello ', a.id)
b.function = lambda: sum('hello ', b.id)

print a.function()
print b.function()

它工作得很好:

hello friend
hello buddy

问题是当我尝试使用for循环做同样的事情时,结果并不像我预期的那样:

a=thing('friend')
b=thing('buddy')

aList=[a,b]

for i in aList:
    i.function = lambda: sum('hello ', i.id)

print a.function()
print b.function()

......它产生了这个:

hello buddy
hello buddy

有人可以帮助我吗?

0 个答案:

没有答案