什么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)
Run Code Online (Sandbox Code Playgroud)
lambda v: v创建一个标识函数,它只返回其参数不变.将它分配给局部变量等同于定义这样的局部函数:
def any(v):
return v
Run Code Online (Sandbox Code Playgroud)
对于想要调用函数对参数进行某些处理的代码,对于实际函数不可用或处理不受欢迎的情况,它可以作为回退.
在您发布的代码中,type_逻辑上可能是假的(最有可能None),这意味着它不被调用,因此它被身份函数替换.if在这种情况下,作者也可以使用更明确的方法来跳过函数调用,代价是循环中出现额外的混乱.
BTW any是局部变量的错误名称,因为它会使内置函数以相同的名称和完全不同的含义进行阴影.
| 归档时间: |
|
| 查看次数: |
504 次 |
| 最近记录: |