Kan*_*ath 1 python lambda variable-assignment python-2.7
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']
Run Code Online (Sandbox Code Playgroud)
我可以让lambda函数变得更简单,f = lambda map: os.path.exists但是我不能让它改变地图.谁能告诉我如何实现这一目标?如果这根本不可能,为什么?
Mar*_*ers 15
你不能在表达式中使用赋值,它是一个声明.A lambda只能包含一个表达式,并且不包含语句.
您可以通过使用该operator.setitem()函数来分配到地图:
import operator
lambda map: operator.setitem(map, 'x', 'y')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12571 次 |
| 最近记录: |