国产探花免费观看_亚洲丰满少妇自慰呻吟_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

 


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 元氏县| 灵川县| 城口县| 大兴区| 共和县| 霞浦县| 积石山| 曲水县| 通化县| 玉溪市| 陵水| 保德县| 东乡族自治县| 喀什市| 禄丰县| 桂平市| 荣成市| 安化县| 霞浦县| 平凉市| 获嘉县| 军事| 陆丰市| 金湖县| 济阳县| 沾益县| 定州市| 凤山市| 西藏| 龙泉市| 洞口县| 金川县| 达孜县| 宣威市| 万宁市| 乌苏市| 娄烦县| 长海县| 合肥市| 洪泽县| 延寿县|