您好,登錄后才能下訂單哦!
lambda 返回的是一個函數(shù)而不是一個結(jié)果
如果函數(shù)的返回值是一個函數(shù) 就可以實(shí)現(xiàn)f(a)(b)
下面是一個函數(shù)式編程的一個例子
#!/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" # 返回一個函數(shù) 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])] # 如果一個數(shù)字就直接操作 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
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。