1

パイソン 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']

そのラムダ関数をより単純なものf = lambda map: os.path.existsにすることはできますが、マップを変更することはできません。誰かがこれを達成する方法を教えてもらえますか? これがまったく不可能な場合、なぜですか?

4

1 に答える 1

15

式で代入を使用することはできません。これはステートメントです。Aには式を1 つlambdaだけ含めることができ、ステートメントは含まれません。

ただし、代わりに関数を使用して、マップに割り当てることができます。operator.setitem()

import operator

lambda map: operator.setitem(map, 'x', 'y')
于 2013-03-11T14:37:17.890 に答える