開篇就要提到一個(gè)大的話題:編程范型。什么是編程范型?引用維基百科中的解釋:
代碼如下:
編程范型或編程范式(英語:Programming paradigm),(范即模范之意,范式即模式、方法),是一類典型的編程風(fēng)格,是指從事軟件工程的一類典型的風(fēng)格(可以對(duì)照方法學(xué))。如:函數(shù)式編程、程序編程、面向?qū)ο缶幊獭⒅噶钍骄幊痰鹊葹椴煌木幊谭缎汀?/p>
編程范型提供了(同時(shí)決定了)程序員對(duì)程序執(zhí)行的看法。例如,在面向?qū)ο缶幊讨校绦騿T認(rèn)為程序是一系列相互作用的對(duì)象,而在函數(shù)式編程中一個(gè)程序會(huì)被看作是一個(gè)無狀態(tài)的函數(shù)計(jì)算的串行。
正如軟件工程中不同的群體會(huì)提倡不同的“方法學(xué)”一樣,不同的編程語言也會(huì)提倡不同的“編程范型”。一些語言是專門為某個(gè)特定的范型設(shè)計(jì)的(如Smalltalk和Java支持面向?qū)ο缶幊蹋鳫askell和Scheme則支持函數(shù)式編程),同時(shí)還有另一些語言支持多種范型(如Ruby、Common Lisp、Python和Oz)。
編程范型和編程語言之間的關(guān)系可能十分復(fù)雜,由于一個(gè)編程語言可以支持多種范型。例如,C++設(shè)計(jì)時(shí),支持過程化編程、面向?qū)ο缶幊桃约胺盒途幊獭H欢O(shè)計(jì)師和程序員們要考慮如何使用這些范型元素來構(gòu)建一個(gè)程序。一個(gè)人可以用C++寫出一個(gè)完全過程化的程序,另一個(gè)人也可以用C++寫出一個(gè)純粹的面向?qū)ο蟪绦颍踔吝€有人可以寫出雜揉了兩種范型的程序。
不管看官是初學(xué)者還是老油條,都建議將上面這段話認(rèn)真讀完,不管理解還是不理解,總能有點(diǎn)感覺的。
這里推薦一篇文章,這篇文章來自網(wǎng)絡(luò):《主要的編程范型》
扯了不少編程范型,今天本講要講什么呢?今天要介紹幾個(gè)python中的小函數(shù),這幾個(gè)函數(shù)都是從函數(shù)式編程借鑒過來的,它們就是:
filter、map、reduce、lambda、yield
有了它們,最大的好處是程序更簡(jiǎn)潔;沒有它們,程序也可以用別的方式實(shí)現(xiàn),只不過麻煩一些罷了。所以,還是能用則用之吧。
lambda
lambda函數(shù),是一個(gè)只用一行就能解決問題的函數(shù),聽著是多么誘人呀。看下面的例子:
代碼如下:
>>> def add(x): #定義一個(gè)函數(shù),將輸入的變量增加3,然后返回增加之后的值
... x +=3
... return x
...
>>> numbers = range(10)
>>> numbers
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9] #有這樣一個(gè)list,想讓每個(gè)數(shù)字增加3,然后輸出到一個(gè)新的list中
>>> new_numbers = []
>>> for i in numbers:
... new_numbers.append(add(i)) #調(diào)用add()函數(shù),并append到list中
...
新聞熱點(diǎn)
疑難解答
圖片精選