该client
变量是在外部范围中定义的,因此,在lambda
运行该变量时,它将始终设置为列表中的最后一个客户端。
为了获得预期的结果,可以给lambda一个带有默认值的参数:
passIf = lambda client=client: client.returncode(CMD2) == 0
由于默认值是在定义lambda时评估的,因此其值将保持正确。
def createLambda(client):
return lambda: client.returncode(CMD2) == 0
#...
passIf = createLambda(client)
这里拉姆达指client
在可变createLambda
的功能,其具有正确的值。