any = lambda v: v是什么意思?看起来v只是v本身。
class Object(object):
"""Common base class supporting automatic kwargs->attributes handling,
and cloning."""
attrs = ()
def __init__(self, *args, **kwargs):
any = lambda v: v
for name, type_ in self.attrs:
value = kwargs.get(name)
if value is not None:
setattr(self, name, (type_ or any)(value))
else:
try:
getattr(self, name)
except AttributeError:
setattr(self, name, None)发布于 2012-11-01 16:19:17
lambda v: v创建了一个identity函数,该函数返回的参数不变。将其赋给局部变量等同于定义如下局部函数:
def any(v):
return v对于想要调用函数对参数执行某些处理的代码来说,它可以用作备用方法,用于实际函数不可用或处理不需要的情况。
在您发布的代码中,type_在逻辑上可能是假的(很可能是None),这意味着它不会被调用,因此将其替换为标识函数。在这种情况下,作者还可以使用更显式的if来跳过函数调用,代价是循环中会出现额外的混乱。
顺便说一下,对于局部变量来说,any不是一个好名字,因为它以相同的名称和完全不同的含义隐藏了built-in function。
发布于 2012-11-01 16:19:21
lambda的意思是“动态创建函数”。它是lambda演算(阿隆佐·丘奇的论文)的一部分,也是函数式编程的基础。
表达式lambda v: v创建一个接受参数(在本例中为v)的函数,并将该参数返回
https://stackoverflow.com/questions/13173271
复制相似问题