關於python中lambda表達式

一、什麼是 lambda函數:

lambda函數是一個匿名函數,不需要定義函數的具體名字。

二、什麼情況使用lambda函數:

lambda表達式,通常是在需要一個函數,但是又不想費神去命名一個函數的場合下使用,以下兩種定義函數的方式結果是一樣的。

def f ( x ,y):
return x * y

g = lambda x ,y: x * y

三、如何使用lambda函數:

1、 lambda 函數可以接收任意多個參數 (包括可選參數) 並且返回單個表達式的值。
2、lambda 函數不能包含命令,後只能有一個表達式,lambda函數會自動返回結果。
3、

格式   lambda x ,y: x * y 
冒號前爲變量名,冒號後爲表達式

lambda函數用法,見以下:
代碼引用自此鏈接

def calc_2_num(x, y, fun):
    return fun(x, y)


def test_callback(x, y, callback):
    result = x + y
    callback(result)


if __name__ == '__main__':
    fun_add = lambda x, y: x + y
    fun_mul = lambda x, y: x * y

    # 函數參數演示
    print(calc_2_num(2, 4, fun_add))
    print(calc_2_num(2, 4, fun_mul))
    print(calc_2_num(2, 4, lambda x, y: x ** y))

    # 函數回調演示
    test_callback(3, 6, lambda val: print("3 + 6 =", val))

    # 匿名類
    obj = type("", (), {
        '__init__': lambda self, **kwargs: self.__dict__.update(kwargs),
        '__eq__': lambda self, other: self.__dict__ == other.__dict__,
    })(
        DEBUG=True,
        say=lambda: print("Hello"),
    )
    print(obj)
    print(obj.DEBUG)
    obj.say()

四、lambda和def區別

① python lambda會創建一個函數對象,但不會把這個函數對象賦給一個標識符,而def則會把函數對象賦值給一個變量。
② python lambda它只是一個表達式,而def則是一個語句。
`

五、總結:

lambda 並不會帶來程序運行效率的提高,只會使代碼更簡潔。
參考鏈接
參考鏈接

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章