溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

lambda和字典的例子

發(fā)布時間:2020-07-26 07:02:22 來源:網(wǎng)絡(luò) 閱讀:1130 作者:ROMMEL_X 欄目:開發(fā)技術(shù)

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


向AI問一下細(xì)節(jié)

免責(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)容。

AI