如何在lambda函数中进行赋值
我在用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
,但是我无法让它改变这个map。有人能告诉我怎么才能做到这一点吗?如果根本不可能,那为什么呢?
1 个回答
15
你不能在一个表达式里使用赋值,因为赋值是一个语句。一个 lambda
只能包含 一个 表达式,而语句是不可以的。
不过,你可以通过使用 operator.setitem()
函数 来对 map 进行赋值:
import operator
lambda map: operator.setitem(map, 'x', 'y')