国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

Python(2.7.6)函數對象與閉包

2019-11-14 17:19:11
字體:
來源:轉載
供稿:網友

在 Python 中,一切皆對象。函數也是對象,它可以賦值給其他變量,也可以當作參數傳遞。

lambda 表達式可以創建函數對象,在 Python 中,lambda 表達式的函數體只能有唯一的一條語句,也就是返回值表達式語句。

cube = lambda x : x ** 3PRint type(cube)    # <type 'function'>print cube(5)

以函數對象作為參數的內置函數:map、filter、reduce。

map 函數接收一個函數對象,依次作用于列表中的每個元素,并將返回結果置于新的列表:

>>> map(lambda x: x ** 2, xrange(5))[0, 1, 4, 9, 16]

filter 函數接收一個函數對象,依次作用于列表中的每個元素,并將返回結果為 True 的元素置于新的列表:

>>> filter(lambda s : len(s) > 3, 'Beautiful is better than ugly'.split(' '))['Beautiful', 'better', 'than', 'ugly']

reduce 函數接收一個函數對象,這個函數須接收兩個參數。函數先作用于列表的前兩個元素,并將結果與下一個元素作為下一次調用的參數,累進地作用與整個列表:

>>> reduce(lambda a,b: a*b, [1, 2, 3, 4, 5])    # ((((1*2)*3)*4)*5)120

 

在 Python 中,簡單地說,如果在一個內部函數里,對在外部函數定義的局部變量進行引用,那么內部函數就被認為是閉包,而被內部函數所引用的局部變量則稱為自由變量。

def fall(v0):    g = 9.8    return lambda t: v0 * t + 0.5 * g * t ** 2freefall = fall(v0 = 0)print freefall(5)

 內部函數的 __closure__ 屬性保存了自由變量的取值:

print freefall.__closure__[0].cell_contents        # 9.8

 


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 徐闻县| 蒙城县| 玉田县| 新源县| 大姚县| 修武县| 北海市| 祁门县| 丹江口市| 刚察县| 利津县| 鱼台县| 永德县| 休宁县| 龙胜| 扶余县| 关岭| 榕江县| 长泰县| 本溪| 威海市| 芦山县| 大连市| 和硕县| 融水| 冕宁县| 沂水县| 昆山市| 沁源县| 西乌珠穆沁旗| 夏邑县| 余干县| 鄂尔多斯市| 宝鸡市| 桑日县| 景德镇市| 靖安县| 汕尾市| 南皮县| 广州市| 西充县|