1

Python 2.7.1

我想了解为什么我不能做以下看起来很明智的事情

def do_stuff():
    # return a function which takes a map as an argument and puts a key in there
    f = lambda map: map['x'] = 'y' #compilation error
    return f 

x = do_stuff()
map = {}
x(map)
print map['x']

我可以让那个 lambda 函数变得更简单一些,f = lambda map: os.path.exists但是我不能让它改变地图。有人可以告诉我如何实现这一目标吗?如果这根本不可能,为什么?

4

1 回答 1

15

您不能在表达式中使用赋值,它是一个语句。Alambda只能包含一个表达式,不包含语句。

但是,您可以通过使用该operator.setitem()函数来分配给地图:

import operator

lambda map: operator.setitem(map, 'x', 'y')
于 2013-03-11T14:37:17.890 回答