一、什麼是 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則是一個語句。
`