首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >any = lambda v: v是什么意思?

问any = lambda v: v是什么意思?
EN

Stack Overflow用户
提问于 2012-11-01 16:15:13
回答 2查看 732关注 0票数 2

any = lambda v: v是什么意思?看起来v只是v本身。

代码语言:javascript
复制
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)
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-11-01 16:19:17

lambda v: v创建了一个identity函数,该函数返回的参数不变。将其赋给局部变量等同于定义如下局部函数:

代码语言:javascript
复制
def any(v):
    return v

对于想要调用函数对参数执行某些处理的代码来说,它可以用作备用方法,用于实际函数不可用或处理不需要的情况。

在您发布的代码中,type_在逻辑上可能是假的(很可能是None),这意味着它不会被调用,因此将其替换为标识函数。在这种情况下,作者还可以使用更显式的if来跳过函数调用,代价是循环中会出现额外的混乱。

顺便说一下,对于局部变量来说,any不是一个好名字,因为它以相同的名称和完全不同的含义隐藏了built-in function。

票数 9
EN

Stack Overflow用户

发布于 2012-11-01 16:19:21

lambda的意思是“动态创建函数”。它是lambda演算(阿隆佐·丘奇的论文)的一部分,也是函数式编程的基础。

表达式lambda v: v创建一个接受参数(在本例中为v)的函数,并将该参数返回

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13173271

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档