函數式編程使用一系列的函數解決問題。函數僅接受輸入并產生輸出,不包含任何能影響產生輸出的內部狀態。任何情況下,使用相同的參數調用函數始終能產生同樣的結果。
在一個函數式的程序中,輸入的數據“流過”一系列的函數,每一個函數根據它的輸入產生輸出。函數式風格避免編寫有“邊界效應”(sideeffects)的函數:修改內部狀態,或者是其他無法反應在輸出上的變化。完全沒有邊界效應的函數被稱為“純函數式的”(purelyfunctional)。避免邊界效應意味著不使用在程序運行時可變的數據結構,輸出只依賴于輸入。
可以認為函數式編程剛好站在了面向對象編程的對立面。對象通常包含內部狀態(字段),和許多能修改這些狀態的函數,程序則由不斷修改狀態構成;函數式編程則極力避免狀態改動,并通過在函數間傳遞數據流進行工作。但這并不是說無法同時使用函數式編程和面向對象編程,事實上,復雜的系統一般會采用面向對象技術建模,但混合使用函數式風格還能讓你額外享受函數式風格的優點。
為什么使用函數式編程?
函數式的風格通常被認為有如下優點:
邏輯可證
這是一個學術上的優點:沒有邊界效應使得更容易從邏輯上證明程序是正確的(而不是通過測試)。
模塊化
函數式編程推崇簡單原則,一個函數只做一件事情,將大的功能拆分成盡可能小的模塊。小的函數更易于閱讀和檢查錯誤。
組件化
小的函數更容易加以組合形成新的功能。
易于調試
細化的、定義清晰的函數使得調試更加簡單。當程序不正常運行時,每一個函數都是檢查數據是否正確的接口,能更快速地排除沒有問題的代碼,定位到出現問題的地方。
易于測試
不依賴于系統狀態的函數無須在測試前構造測試樁,使得編寫單元測試更加容易。
更高的生產率
函數式編程產生的代碼比其他技術更少(往往是其他技術的一半左右),并且更容易閱讀和維護。
以上內容為大家介紹了Python什么是函數式編程?,希望對大家有所幫助,如果想要了解更多Python相關知識,請關注IT培訓機構:千鋒教育。