lambda和字典的例子-创新互联
lambda 返回的是一个函数而不是一个结果
目前成都创新互联公司已为近千家的企业提供了网站建设、域名、网络空间、网站托管、服务器租用、企业网站设计、会泽网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。如果函数的返回值是一个函数 就可以实现f(a)(b)
下面是一个函数式编程的一个例子
#!/usr/bin/env python # -*- coding:utf-8 -*- __author__ = 'teng' # f(a, b, c, d) = (a+b) * c -d # f(a, b, c, d) = (a+b) * (c-d) def calc2(s): """ def f_add(a, b): return a+b def f_mul(a, b): return a*b def f_sub(a, b): return a-b :param s: :return: """ if s == '+': return lambda a, b: a+b elif s== '*': return lambda a, b: a*b elif s=='-': return lambda a,b:a-b else: assert False, "error: operator not defined" # 返回一个函数 calc_dict={ '+':lambda a, b: a+b, '*':lambda a, b: a*b, '-':lambda a, b: a-b } if __name__=='__main__': a, b, c, d = 1,2,3,4 print calc2('-')(calc2('*')(calc2('+')(a, b), c), d) print calc2('*')(calc2('+')(a,b), calc2('-')(c,d)) operators = [(calc_dict['+'], [a, b]), (calc_dict['*'], [c]), (calc_dict['-'], [d])] # 如果一个数字就直接操作 result和num2 for operator, num in operators: if len(num)==1: num1=result num2=num[0] else: num1=num[0] num2=num[1] result=operator(num1, num2) print result
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
分享标题:lambda和字典的例子-创新互联
分享地址:http://azwzsj.com/article/dddddj.html