函數式編程(20160812).md


  1. 函數作爲返回值
    1. 高階函數可以接受函數作爲參數,還可以把函數作爲返回值
  2. 閉包
    1. 注意到返回的函數在其定義內部引用了局部變量args,所以,當一個函數返回了一個函數後,其內部的局部變量還被新函數引用,所以,閉包用起來簡單,實現起來可不容易。
    2. 返回的函數並沒有立即執行,直到調用才執行。
    3. 返回閉包時牢記的一點就是:返回函數不要引用任何循環變量,或者後續會發生變化的變量。
    4. 如果一定要引入循環變量:再創建一個函數,用該函數的參數綁定循環變量當前值。
  3. 匿名函數
    1. 關鍵字lambda表示匿名函數,冒號前的x表示函數參數。
    2. 匿名函數也是一個函數對象,也可以把匿名函數賦值給一個變量,再利用變量來調用。

python
>def build(x,y):
> return lambda: x*x + y*y

  • Python 對匿名函數支持有限。
  • 裝飾器
    1. 在代碼運行期間動態增加功能,稱爲“裝飾器”(decorator),其本質是 一個返回函數的高階函數。
  • 偏函數
    1. 偏函數也能降低函數的難度。
    2. 當函數的參數個數太多,需要簡化時,使用functools.partial可以創建一個新的函數,這個新函數可以固定住原函數的部分參數,從而在調用時更簡單。
  • 發表評論
    所有評論
    還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
    相關文章