在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 教程/ Python/ 五、匿名函數(shù)
二、Enum 的源碼
前言
一、Python 模塊簡介
一、List(列表)
五、匿名函數(shù)
三、什么是元類
二、循環(huán)語句
二、模塊的使用
三、第一個 Python 程序
線程與進(jìn)程
Python
三、條件語句和循環(huán)語句綜合實例
四、對象的描述器
三、類的屬性
一、迭代
五、迭代器和生成器綜合例子
六、運算符相關(guān)的魔術(shù)方法
一、枚舉類的使用
前言
一、簡明概述
二、Python 的基本數(shù)據(jù)類型
多線程編程
五、作用域
四、包
四、枚舉的比較
四、Python 中的變量
六、類的多態(tài)
一、Python 中類也是對象
一、Python 的 Magic Method
前言
四、生成器
一、面向?qū)ο蟮母拍?/span>
五、類的繼承
二、類
二、使用 <code>type()</code> 動態(tài)創(chuàng)建類
進(jìn)程
二、set
三、主模塊和非主模塊
一、字典(Dictionary)
前言
前言
前言
前言
四、集成開發(fā)環(huán)境(IDE): PyCharm
前言
四、函數(shù)的參數(shù)
三、lsit 生成式(列表生成式)
四、自定義元類
四、類的方法
二、函數(shù)傳值問題
二、注釋
一、條件語句
一、Python 語法的簡要說明
三、函數(shù)返回值
三、基本數(shù)據(jù)類型轉(zhuǎn)換
三、屬性的訪問控制
二、Python 的安裝
前言
三、命名規(guī)范
一、Python 自定義函數(shù)的基本步驟
三、自定義類型的枚舉
五、自定義容器(Container)
二、Python 迭代器
前言
二、tuple(元組)
一、Python 簡介
前言
前言
前言
二、構(gòu)造(<code>__new__</code>)和初始化(<code>__init__</code>)
前言

五、匿名函數(shù)

有沒有想過定義一個很短的回調(diào)函數(shù),但又不想用 def 的形式去寫一個那么長的函數(shù),那么有沒有快捷方式呢?答案是有的。

python 使用 lambda 來創(chuàng)建匿名函數(shù),也就是不再使用 def 語句這樣標(biāo)準(zhǔn)的形式定義一個函數(shù)。

匿名函數(shù)主要有以下特點:

  • lambda 只是一個表達(dá)式,函數(shù)體比 def 簡單很多。
  • lambda 的主體是一個表達(dá)式,而不是一個代碼塊。僅僅能在 lambda 表達(dá)式中封裝有限的邏輯進(jìn)去。
  • lambda 函數(shù)擁有自己的命名空間,且不能訪問自有參數(shù)列表之外或全局命名空間里的參數(shù)。

基本語法

lambda [arg1 [,arg2,.....argn]]:expression

示例:

# -*- coding: UTF-8 -*-

sum = lambda num1 , num2 : num1 + num2;

print( sum( 1 , 2 ) )

輸出的結(jié)果:

3

注意:盡管 lambda 表達(dá)式允許你定義簡單函數(shù),但是它的使用是有限制的。 你只能指定單個表達(dá)式,它的值就是最后的返回值。也就是說不能包含其他的語言特性了, 包括多個語句、條件表達(dá)式、迭代以及異常處理等等。

匿名函數(shù)中,有一個特別需要注意的問題,比如,把上面的例子改一下:

# -*- coding: UTF-8 -*-

num2 = 100
sum1 = lambda num1 : num1 + num2 ;

num2 = 10000
sum2 = lambda num1 : num1 + num2 ;

print( sum1( 1 ) )
print( sum2( 1 ) )

你會認(rèn)為輸出什么呢?第一個輸出是 101,第二個是 10001,結(jié)果不是的,輸出的結(jié)果是這樣:

10001
10001

這主要在于 lambda 表達(dá)式中的 num2 是一個自由變量,在運行時綁定值,而不是定義時就綁定,這跟函數(shù)的默認(rèn)值參數(shù)定義是不同的。所以建議還是遇到這種情況還是使用第一種解法。