Python 复制到lambda中的新变量
在pythonPython 复制到lambda中的新变量,python,lambda,Python,Lambda,在pythonlambda函数中是否可以执行以下操作?如果是这样,这样的事情怎么可能实现呢 def modify(**kwargs): from copy import deepcopy new_kwargs = deepcopy(kwargs) new_kwargs['x'] = new_kwargs['x'] * 2 return new_kwargs 您只需创建一个新的dict并返回它,而无需命名。例如: >>> modify = lam
lambda
函数中是否可以执行以下操作?如果是这样,这样的事情怎么可能实现呢
def modify(**kwargs):
from copy import deepcopy
new_kwargs = deepcopy(kwargs)
new_kwargs['x'] = new_kwargs['x'] * 2
return new_kwargs
您只需创建一个新的
dict
并返回它,而无需命名。例如:
>>> modify = lambda **kwargs: dict(kwargs, **{'x':kwargs['x']*2})
>>> modify(x=4)
# {'x': 8}
使用Python 3.8的赋值表达式,您可以半合理地完成等效的操作:
>>> from copy import deepcopy
>>> modify = lambda **kwargs: dict(new_kwargs := deepcopy(kwargs), x=new_kwargs['x']*2)
>>> modify(x=4)
{'x': 8}
但是,这会创建一个额外的浅拷贝,这并没有什么好的理由。它也不是很可读
撇开将lambda指定给一个名称是违反样式指南的事实不谈(因为它违背了它的单一用途),我只会坚持使用您的完整函数定义,因为它更清晰、更高效。不过,这不会再进行深度复制了。我不知道你为什么要做深度复制,但是如果你需要它,那么,现在你没有了。可能不干净。为什么不直接使用已经起作用的功能呢?