我一直在搞弄Python中的线程,在使用lambda时遇到了一些奇怪的事情。 由于我不想创建扩展线程的新类,并且不得不检索一些结果,因此我决定使用在外部范围中声明的字典,并在lambda中向其添加键和值。
因此,第一个测试/尝试这样做是使用以下语法:
result = {}
target = lambda value, result: result[value] = value**2
target(2)
print(result)
输出为:
target = lambda value, result: result[value] = value**2
^
SyntaxError: can't assign to lambda
但是随后,我使用了以下语法,并且可以按预期工作。
result = {}
target = lambda value, result: result.update({value: value**2})
target(2)
print(result)
输出:
{2: 4}
为什么会发生?