lambda和字典的例子
lambda 返回的是一个函数而不是一个结果
如果函数的返回值是一个函数 就可以实现f(a)(b)
下面是一个函数式编程的一个例子
#!/usr/bin/envpython#-*-coding:utf-8-*-__author__='teng'#f(a,b,c,d)=(a+b)*c-d#f(a,b,c,d)=(a+b)*(c-d)defcalc2(s):"""deff_add(a,b):returna+bdeff_mul(a,b):returna*bdeff_sub(a,b):returna-b:params::return:"""ifs=='+':returnlambdaa,b:a+belifs=='*':returnlambdaa,b:a*belifs=='-':returnlambdaa,b:a-belse:assertFalse,"error:operatornotdefined"#返回一个函数calc_dict={'+':lambdaa,b:a+b,'*':lambdaa,b:a*b,'-':lambdaa,b:a-b}if__name__=='__main__':a,b,c,d=1,2,3,4printcalc2('-')(calc2('*')(calc2('+')(a,b),c),d)printcalc2('*')(calc2('+')(a,b),calc2('-')(c,d))operators=[(calc_dict['+'],[a,b]),(calc_dict['*'],[c]),(calc_dict['-'],[d])]#如果一个数字就直接操作result和num2foroperator,numinoperators:iflen(num)==1:num1=resultnum2=num[0]else:num1=num[0]num2=num[1]result=operator(num1,num2)printresult
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。