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