函數式編程--functional programming編程
能夠歸結到面向過程的程序設計,但其思想更接近數學計算。編程語言
對應到編程語言,就是越低級的語言,越貼近計算機,抽象程度低,執行效率高,好比C語言;越高級的語言,越貼近計算,抽象程度高,執行效率低,好比Lisp語言。函數式編程
函數式編程就是一種抽象程度很高的編程範式,純粹的函數式編程語言編寫的函數沒有變量,所以,任意一個函數,只要輸入是肯定的,輸出就是肯定的,這種純函數咱們稱之爲沒有反作用。函數
而容許使用變量的程序設計語言,因爲函數內部的變量狀態不肯定,一樣的輸入,可能獲得不一樣的輸出,所以,這種函數是有反作用的。設計
函數式編程的一個特色就是,容許把函數自己做爲參數傳入另外一個函數,還容許返回一個函數!code
Python對函數式編程提供部分支持。因爲Python容許使用變量,所以,Python不是純函數式編程語言。get
函數名其實就是指向函數的變量!數學
abs = 10 是能夠賦值的 可是賦值之後不可執行abs(-10) 拋出io
TypeError: 'int' object is not callable
def get(number):
return number;
abs = get;
print abs(-10)function
說明內置的函數名也是能夠指向新的函數的。
既然變量能夠指向函數,函數的參數能接收變量,那麼一個函數就能夠接收另外一個函數做爲參數,這種函數就稱之爲高階函數。
一個最簡單的高階函數:
def add(x, y, f): return f(x) + f(y)
add(-5, 6, abs) = 11.