自學Python教程【第四十七節(jié)】面向?qū)ο螅?)
歡迎大家來到自學Python編程教室,今天為大家分享第四十七節(jié)自學Pyhon教程,也就是我們面向?qū)ο髮W習的第三節(jié)課,面向?qū)ο蟛⒉缓美斫?,是因為大家習慣了面向過程,所以在這節(jié)課中我們將面向?qū)ο蠛兔嫦蜻^程做一個對比,以便大家更好地理解。

在剛開始編程的時候,從上到下一行行執(zhí)行的簡單程序容易被理解,即使加上if、while、for之類的語句以及函數(shù)調(diào)用,也還是不算困難。有了面向?qū)ο笾?,程序的?zhí)行路徑就變得復雜,很容易讓人混亂。不過當你熟悉之后會發(fā)現(xiàn),面向?qū)ο笫潜让嫦蜻^程更合理的程序設計方式。
今天我用一個例子來展示兩種程序設計方式的不同。
假設我們有一輛汽車,我們知道它的速度(60km/h),以及A、B兩地的距離(100km)。要算出開著這輛車從A地到B地花費的時間。(很像小學數(shù)學題是吧?)
面向過程的方法:
speed = 60.0
distance = 100.0
time = distance / speed
print time
面向?qū)ο蟮姆椒ǎ?/strong>
class Car:
speed = 0
def drive(self, distance):
time = distance / self.speed
print time
car = Car()
car.speed = 60.0
car.drive(100.0)
看上去似乎面向?qū)ο鬀]有比面向過程更簡單,反而寫了更多行代碼。
但是,如果我們讓題目再稍稍復雜一點。假設我們又有了一輛更好的跑車,它的速度是150km/h,然后我們除了想從A到B,還要從B到C(距離200km)。要求分別知道這兩種車在這兩段路上需要多少時間。
面向過程的方法:
speed1 = 60.0
distance1 = 100.0
time1 = distance1 / speed1
print time1
distance2 = 200.0
time2 = distance2 / speed1
print time2
speed2 = 150.0
time3 = distance1 / speed2
print time3
time4 = distance2 / speed2
print time4
面向?qū)ο蟮姆椒ǎ?/strong>
class Car:
speed = 0
def drive(self, distance):
time = distance / self.speed
print time
car1 = Car()
car1.speed = 60.0
car1.drive(100.0)
car1.drive(200.0)
car2 = Car()
car2.speed = 150.0
car2.drive(100.0)
car2.drive(200.0)
對比兩種方法,面向過程把數(shù)據(jù)和處理數(shù)據(jù)的計算全部放在一起,當功能復雜之后,就會顯得很混亂,且容易產(chǎn)生很多重復的代碼。而面向?qū)ο螅岩活悢?shù)據(jù)和處理這類數(shù)據(jù)的方法封裝在一個類中,讓程序的結(jié)構更清晰,不同的功能之間相互獨立。這樣更有利于進行模塊化的開發(fā)方式。
面向?qū)ο蟮乃€很深,我們這里只是粗略一瞥。它不再像之前print、while這些概念那么一目了然。但也沒必要對此畏懼,等用多了自然就熟悉了。找一些實例親手練練,會掌握得更快。
恭喜你在Python自學的道路上又堅持了一天,今天我們用兩道簡單的數(shù)學題,對比了面向?qū)ο蠛兔嫦蜻^程,相信大家對面向?qū)ο笥辛烁畹囊稽c了解,如果你還是覺得面向過程更適合一點、更簡單一點,那你就讓這道數(shù)學題再復雜一些試試?如果還是不太理解面向?qū)ο螅蔷头磸颓孟麓a、找些案例反復練習下,你會懂得!好了,今天的Python教程就為大家分享到這里,明天我們繼續(xù)!
好啦,今天的分享到這里就結(jié)束了,希望大家能夠持續(xù)關注馬哥教育官網(wǎng)!每天都會有大量優(yōu)質(zhì)內(nèi)容與大家分享歐!
聲明:文章來源于網(wǎng)絡,侵刪!