學習Python有一段時間了,期間參考了很多大神的Python文章,主要因為自己的計算機基礎(chǔ)不是很好,學的時候有點磕磕絆絆,但是一道走來,總算覺得自己算是有點兒入門了。因此,總結(jié)一下自己的心得體會和學習過程,希望能寫出一個系列文章,與眾多希望自學Python的新手共享,希望能讓大家少走一些彎路。
2.1編程范型:函數(shù)式和面向?qū)ο笫?/p>
編寫計算機程序的范型常見的有函數(shù)式和面向?qū)ο笫絻煞N,Python的實際應(yīng)用中這兩種范型常常是混合使用的。函數(shù)式編程范型出現(xiàn)的時間較早,在這種編程范型下,常常把將要反復(fù)使用的程序代碼用函數(shù)封裝起來,需要使用時對其進行調(diào)用。比如,下面的Python代碼實現(xiàn)了數(shù)學中求絕對值的功能:
defmy_abs(number):#函數(shù)頭格式:def函數(shù)名(參數(shù)列表):
ifnumber<0.0:return-number#返回值
else:returnnumber#返回值
這樣,每當我們需要求一個數(shù)的絕對值時,只要如下調(diào)用就可以了:
f=-0.5
abs_f=my_abs(f)
print(abs)
它運行的結(jié)果是:
$0.5
從上面的例子中可見,函數(shù)式編程把函數(shù)看作一種操作(或運算),操作的步驟和方法封裝在函數(shù)中,一旦確定,就不可更改,而操作中可變的部分,稱作參數(shù),以函數(shù)參數(shù)的方式傳遞,函數(shù)參數(shù)可以改變函數(shù)運行的結(jié)果,但是不能改變函數(shù)運行的步驟和運算的方法??梢杂梅祷刂当硎竞瘮?shù)運算的結(jié)果,這個返回值作為函數(shù)的值可以賦給別的變量。函數(shù)也可以沒有返回值(這時返回值默認為Python常量None),這時它們只是對于給定的參數(shù)執(zhí)行固定的操作步驟。
面向?qū)ο笫骄幊淌呛瘮?shù)式編程之后出現(xiàn)的一種編程范型,可以用現(xiàn)實世界中的電視機作為例子進行類比。電視機作為一個抽象概念,我們都知道它是什么含義,但某個型號的電視機屏幕的大小、材質(zhì);電路板的品牌、型號;外殼的大小、材質(zhì)….;如何選臺、如何調(diào)節(jié)亮度、如何調(diào)節(jié)音量等細節(jié)是由該型號的電視機生產(chǎn)方案和模具等決定的。而一臺這種型號的電視機生產(chǎn)出來,進入家庭以后,它正在收看什么節(jié)目、屏幕的亮度、色彩、揚聲器的音量等參數(shù)由每個家庭通過操作遙控器進行設(shè)定,它們之間各不相關(guān)。當我們需要對電視生產(chǎn)過程設(shè)計一個程序時,這個例子中的電視機作為源頭上的概念,可以作為一個基類(父類)實現(xiàn):它規(guī)定了電視機都有屏幕、電路板、外殼、揚聲器、遙控器、電源…。某個型號的電視機生產(chǎn)方案和模具,可以作為電視機基類的派生類(子類)實現(xiàn),它規(guī)定了該型號電視機共有的物理特征、出廠狀態(tài)以及對該型號電視機可執(zhí)行的操作。通過對電視機生產(chǎn)方案的實施,可以將該類實例化,形成一個個對象,即一臺臺電視機,可以對每臺電視機進行分別操作實現(xiàn)選臺、調(diào)節(jié)亮度、調(diào)節(jié)音量等操作,電視機會記住這些狀態(tài)。
從上面的例子中,我們可以看到,面向?qū)ο笫骄幊躺婕暗搅祟惡蛯ο髢蓚€概念,它的特點是把程序所要處理的某類對象抽象出來,編寫成表示一個類的代碼。這個類可以含有表示狀態(tài)的數(shù)據(jù)和表示操作的代碼。編碼時,對這個類進行實例化,形成一個具體的對象,對于這個對象,可以有自己獨特的狀態(tài)和操作,而根據(jù)該類實例化的對象之間的狀態(tài)值和操作值可以不同。編碼時,我們常用屬于該對象的變量表示狀態(tài),用屬于該對象的函數(shù)表示操作??梢姡嫦?qū)ο缶幊绦枰玫胶瘮?shù)式編程的概念和成果。
由于面向?qū)ο笫骄幊梯^為復(fù)雜,我們在本教程中只講解函數(shù)式編程。需要知道的是,由于Python本身的特點:Python中的任何事物都是對象。所以,即使只講函數(shù)式編程,也會涉及不少的面向?qū)ο蟮闹R。同時,即使我們著重于講述函數(shù)式編程,它也有足夠的能力完成相當復(fù)雜的任務(wù)。
2.2一個函數(shù)式程序的例子
科學中,常常用到攝氏溫度到華氏溫度的轉(zhuǎn)換。我們編寫一個Python代碼實現(xiàn)它:
#代碼2.1攝氏溫度到華氏溫度的轉(zhuǎn)換
#coding:utf-8#程序中使用中文需要用到這行代碼
defft_from_ct(ct):#參數(shù):ct表示攝氏溫度
returnct*9.0/5+32
#攝氏溫度0-100轉(zhuǎn)換為華氏溫度,間隔10攝氏度
print("攝氏溫度華氏溫度")
forctinrange(0,101,10):
print("{0:8d}--{1:6.2f}".format(ct,ft_from_ct(ct))
在這個短小的代碼中,已有豐富的內(nèi)容,且讓我一一道來。
第1行注釋,以#開頭,到本行結(jié)束為止,都是注釋。注釋可以像第3行那樣從代碼的尾部開始
第2行#coding:utf-8說明程序代碼使用了Unicode字符,這個東東可以讓Python程序使用中文
第3行函數(shù)頭,格式為def函數(shù)名(參數(shù)列表):
第4行這行有縮進,4個空格字符,Python用縮進表示程序結(jié)構(gòu),同級縮進表示同級代碼。本行代碼是函數(shù)ft_from_ct()的代碼,表示返回計算式的結(jié)果
第6行注釋
第7行輸出雙引號括起的字符串
第8行for循環(huán),這是循環(huán)頭,表示對range(0,101,10)中的每個取值ct進行循環(huán)操作。range(0,101,10)也是一個函數(shù),它的運算結(jié)果為從0開始取值,步長為10,到101為止,但不包括101,即[0,10,20,30,40,50,60,70,80,100]。
第9行for循環(huán)的循環(huán)體,同樣有縮進,按格式輸出攝氏溫度和對應(yīng)的華氏溫度
Python中的函數(shù)式編程模式基本上就是像上面這樣了,實際應(yīng)用中一般還會導入函數(shù)庫和使用分支語句、循環(huán)語句,并且常常會用到分支語句、循環(huán)語句的嵌套,內(nèi)置函數(shù)、庫函數(shù)、自定義的函數(shù)和函數(shù)調(diào)用也會多一些,但基本結(jié)構(gòu)就是如這個例子所述。
以上內(nèi)容為大家介紹了Python程序的常見編程范型,希望對大家有所幫助,如果想要了解更多Python相關(guān)知識,請關(guān)注IT培訓機構(gòu):千鋒教育。http://m.2667701.com/