如何在lambda函数中执行赋值

时间:2013-03-11 14:30:54

标签: python python-2.7 lambda variable-assignment

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更简单,但是我不能让它改变地图。谁能告诉我如何实现这一目标?如果这根本不可能呢?

1 个答案:

答案 0 :(得分:15)

你不能在表达式中使用赋值,它是一个声明。 lambda只能包含一个表达式,并且不包含语句。

您可以 分配到地图,而不是使用operator.setitem() function

import operator

lambda map: operator.setitem(map, 'x', 'y')