新聞中心
Ruby語言和Python非常接近,但是整體的結(jié)構(gòu)還是不太一樣的,這種語言具有非常簡捷而清晰的語法特點,適合完成各種高層任務(wù),幾乎可以在所有的操作系統(tǒng)中運行,所以很受程序員的青睞。

創(chuàng)新互聯(lián)公司2013年至今,公司以做網(wǎng)站、成都網(wǎng)站設(shè)計、系統(tǒng)開發(fā)、網(wǎng)絡(luò)推廣、文化傳媒、企業(yè)宣傳、平面廣告設(shè)計等為主要業(yè)務(wù),適用行業(yè)近百種。服務(wù)企業(yè)客戶近千家,涉及國內(nèi)多個省份客戶。擁有多年網(wǎng)站建設(shè)開發(fā)經(jīng)驗。為企業(yè)提供專業(yè)的網(wǎng)站建設(shè)、創(chuàng)意設(shè)計、宣傳推廣等服務(wù)。 通過專業(yè)的設(shè)計、獨特的風格,為不同客戶提供各種風格的特色服務(wù)。
這是一個穩(wěn)妥的答案,但不能很確切地闡明問題。不幸的是,即使是函數(shù)程序員他們自己也很難對 FP 究竟是什么有個一致的認識?!懊と嗣蟆钡墓适掠脕硇稳葸@一情況似乎很合適。還可以放心地將 Python 特性與“命令編程”(使用例如 C、Pascal、C++、Java、Perl、Awk、TCL 以及其它大多數(shù)語言所執(zhí)行的操作,至少是在很大程度上)進行對比。
從個人角度來說,我會將函數(shù)編程粗略地描繪為至少具有以下幾個特征。稱得上函數(shù)性的語言使這些事情變得簡單,而使其它事情變得困難或不可能:函數(shù)是第一類(對象)。即,可以對“數(shù)據(jù)”進行的每樣操作都可以使用函數(shù)本身做到(例如將一個函數(shù)傳遞給另一個函數(shù))。 #t#
將遞歸用作主要的控制結(jié)構(gòu)。在某些語言中,不存在其它“循環(huán)”構(gòu)造。 重點集中在列表 LISt 處理(例如,名稱 Lisp )。列表經(jīng)常和子列表的遞歸一起使用以替代循環(huán)。 “純”函數(shù)語言能夠避免副作用。這不包括在命令語言中最普遍的模式,即指定第一個,然后將另一個值指定給同一個變量來跟蹤程序狀態(tài)。
FP 不鼓勵或根本不允許出現(xiàn) 語句,取而代之是使用表達式求值(換句話說,即函數(shù)加上自變量)。在很純粹的情況下,一個程序就是一個表達式(加上支持的定義)。 FP 關(guān)心的是計算 什么而不是 如何計算。 許多 FP 利用了“更高等級”函數(shù)(換句話說,就是函數(shù)對一些函數(shù)操作,而這些函數(shù)又對其它函數(shù)操作)。
函數(shù)編程的提倡者認為所有這些特征都導(dǎo)致更快速的開發(fā)更短以及錯誤更少的代碼。而且,計算機科學、邏輯和數(shù)學領(lǐng)域的高級理論學家發(fā)現(xiàn)證明函數(shù)語言和程序的正式性能比命令語言和程序容易得多。自從 Python 1.0 以來,Python 具有上面列出的大多數(shù) FP 特征。但對于大多數(shù) Python 特性,它們以一種非?;旌系恼Z言呈現(xiàn)。
很大程度上是因為 Python 的 OOP 特性,您可以使用希望使用的部分而忽略其余部分(直到在稍后需要它為止)。使用 Python 2.0, 列表內(nèi)涵添加了一些 非常棒的“句法上的粉飾”。雖然列表內(nèi)涵沒有添加什么新的能力,但它們使許多舊的能力看起來好了 許多。
Python 特性中 FP 的基本元素是函數(shù) map() 、 reduce() 和 filter() ,以及運算符 lambda 。在 Python 1.x 中, apply() 函數(shù)對于將一個函數(shù)的列表返回值直接應(yīng)用于另一個函數(shù)也很方便。
Python 2.0 為這一目的提供了改進的語法??赡茏屓顺泽@,但很少的這幾個函數(shù)(以及基本運算符)幾乎足以編寫任何 Python程序;特別是,所有的流控制語句( if 、 elif 、 else 、 assert 、 try 、 except 、 finally 、 for 、 break 、 continue 、 while 、 def )可以只使用 FP 函數(shù)和運算符以函數(shù)風格處理。
雖然實際上消除程序中的所有流控制命令可能只對加入“混亂的 Python”競爭(與看上去非常象 Lisp 的代碼)有用,但是理解 FP 是如何使用函數(shù)和遞歸來表示流控制是值得的。
Python 中 Lambda 短路
- # Normal statement-based flow control
- if
: func1() - elif
: func2() - else
- : func3()
- # Equivalent "short circuit" expression
- (
- and
- func1())
- or
- (
- and
- func2())
- or
- (func3())
- # Example "short circuit" expression
- >>> x = 3
- >>>
網(wǎng)頁標題:對于Python 特性進行大揭秘
分享地址:http://www.5511xx.com/article/cdhcsdp.html


咨詢
建站咨詢
