lambda函數的具體格式如下:
Lambda參數:表達式
其中lambda是關鍵字,parameter是函數的參數,可以有0到更多。冒號後面是表達式,表達式是這個函數中唯壹的表達式,lambda函數將返回這個表達式的返回值。
我們來看壹個具體的例子。
在上面的代碼中,number1,number2是lambda函數的參數,number1**2+number**2是該函數的表達式,返回number1,number2的平方和。
上面的代碼創建了壹個lambda函數並將其賦給變量sum_square,通過print函數中的sum_square調用這個lambda函數。
上面的lambda函數完全可以用標準函數來實現,我們可以把上面的代碼改寫成下面的代碼。
代碼中定義了函數sum_square,該函數包含兩個參數,執行壹條語句,並將語句的執行結果作為函數的返回值。上面的代碼可以幫助我們更直觀的理解lambda函數。
Lambda函數不可讀,那麽為什麽會有這麽奇怪的匿名函數呢?這要從lambda的使用說起。讓我們看看下面的代碼。
上面的代碼定義了壹個值列表,並調用python的內置函數filter來生成壹個新的叠代器。過濾函數的第壹個參數是壹個函數,用來確定過濾方法;第二個參數是壹個叠代對象,如列表、集合等。filter函數返回壹個新的叠代器,用來獲取滿足第壹個函數為true的所有元素。在上面的代碼中,我們傳遞給過濾器的第壹個參數是壹個匿名函數:lambda number:number%3==0,當壹個數能被3整除時為真,否則為假。filter函數會創建壹個新的叠代器,調用上面的匿名函數判斷元素是否滿足條件,得到所有是3的倍數的數。
當然,上述代碼也可以用普通的函數方式實現,如下所示:
我們可以看到,匿名函數的所有功能都可以通過標準函數來實現。匿名函數在調用其他函數(如filter、map等)時經常被用作參數。).使用匿名函數可以使代碼更加簡潔。匿名函數主要用於完成簡單的任務。如果匿名函數過於復雜,會導致可讀性差,調試困難。所以強烈建議不要用lambda寫天書代碼。總之,要根據實際情況決定是否使用匿名函數。