【问题标题】:How to perform an assignment inside a lambda function [duplicate]如何在 lambda 函数中执行赋值
【发布时间】:2013-02-26 18:42:51
【问题描述】:

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,但是我无法让它更改地图。有人可以告诉我如何实现这一目标吗?如果这根本不可能,为什么?

【问题讨论】:

    标签: python python-2.7 lambda variable-assignment


    【解决方案1】:

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

    可以分配给地图,但使用 operator.setitem() function 代替:

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

    【讨论】:

    • 其实很酷!!
    • map.__setitem__('x', 'y')
    • @newacct: 是的,但是直接使用了特殊的钩子方法;最好使用 API 方法。 :-)
    猜你喜欢
    • 1970-01-01
    • 2015-05-08
    • 1970-01-01
    • 2020-02-02
    • 1970-01-01
    • 2016-10-16
    • 2018-03-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多