什么= lambda v:v是什么意思?

xie*_*yun 2 python lambda

什么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)

use*_*342 9

lambda v: v创建一个标识函数,它只返回其参数不变.将它分配给局部变量等同于定义这样的局部函数:

def any(v):
    return v
Run Code Online (Sandbox Code Playgroud)

对于想要调用函数对参数进行某些处理的代码,对于实际函数不可用或处理不受欢迎的情况,它可以作为回退.

在您发布的代码中,type_逻辑上可能是假的(最有可能None),这意味着它不被调用,因此它被身份函数替换.if在这种情况下,作者也可以使用更明确的方法来跳过函数调用,代价是循环中出现额外的混乱.

BTW any是局部变量的错误名称,因为它会使内置函数以相同的名称和完全不同的含义进行阴影.