如何在lambda函数中进行赋值

1 投票
1 回答
13333 浏览
提问于 2025-04-17 18:41

我在用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')

撰写回答