python支持多种编程范式吗_Python3学习之路~6.1 编程范式:面向过程 VS 面向对象...
編程范式
編程是程序員用特定的語法+數(shù)據(jù)結(jié)構(gòu)+算法組成的代碼來告訴計(jì)算機(jī)如何執(zhí)行任務(wù)的過程,一個(gè)程序是程序員為了得到一個(gè)任務(wù)結(jié)果而編寫的一組指令的集合,正所謂條條大路通羅馬,實(shí)現(xiàn)一個(gè)任務(wù)的方式有很多種不同的方式,對(duì)這些不同的編程方式的特點(diǎn)進(jìn)行歸納總結(jié)得出來的編程方式類別,即為編程范式。不同的編程范式本質(zhì)上代表對(duì)各種類型的任務(wù)采取的不同的解決問題的思路, 大多數(shù)語言只支持一種編程范式,當(dāng)然也有些語言可以同時(shí)支持多種編程范式。兩種最重要的編程范式分別是面向過程編程和面向?qū)ο缶幊獭?/p>
面向過程編程(Procedural Programming)
Procedural programming uses a list of instructions to tell the computer what to do step-by-step.
面向過程編程依賴procedures(過程),一個(gè)procedure包含一組要被進(jìn)行計(jì)算的步驟,面向過程又被稱為top-down languages, 就是程序從上到下一步步執(zhí)行,一步步從上到下,從頭到尾的解決問題 。基本設(shè)計(jì)思路就是程序一開始是要著手解決一個(gè)大的問題,然后把一個(gè)大問題分解成很多個(gè)小問題或子過程,這些子過程再執(zhí)行的過程再繼續(xù)分解直到小問題足夠簡單到可以在一個(gè)小步驟范圍內(nèi)解決。
舉個(gè)典型的面向過程的例子,數(shù)據(jù)庫備份,分三步,連接數(shù)據(jù)庫,備份數(shù)據(jù)庫,測試備份文件可用性。
代碼如下
def db_conn():
print("connecting db...")
def db_backup(dbname):
print("導(dǎo)出數(shù)據(jù)庫...",dbname)
print("將備份文件打包,移至相應(yīng)目錄...")
def db_backup_test():
print("將備份文件導(dǎo)入測試庫,看導(dǎo)入是否成功")
def main():
db_conn()
db_backup('my_db')
db_backup_test()
if __name__ == '__main__':
main()
這樣做的問題也是顯而易見的,就是如果你要對(duì)程序進(jìn)行修改,對(duì)你修改的那部分有依賴的各個(gè)部分你都也要跟著修改, 舉個(gè)例子,如果程序開頭你設(shè)置了一個(gè)變量值 為1 , 但如果其它子過程依賴這個(gè)值 為1的變量才能正常運(yùn)行,那如果你改了這個(gè)變量,那這個(gè)子過程你也要修改,假如又有一個(gè)其它子程序依賴這個(gè)子過程 , 那就會(huì)發(fā)生一連串的影響,隨著程序越來越大, 這種編程方式的維護(hù)難度會(huì)越來越高。
所以我們一般認(rèn)為, 如果你只是寫一些簡單的腳本,去做一些一次性任務(wù),用面向過程的方式是極好的,但如果你要處理的任務(wù)是復(fù)雜的,且需要不斷迭代和維護(hù)的, 那還是用面向?qū)ο笞罘奖懔恕?/p>
面向?qū)ο缶幊?#xff08;Object Oriented Programming)
面向?qū)ο缶幊?#xff08;OOP編程)是利用“類”和“對(duì)象”來創(chuàng)建各種模型來實(shí)現(xiàn)對(duì)真實(shí)世界的描述,使用面向?qū)ο缶幊痰脑蛞环矫媸且驗(yàn)樗梢允钩绦虻木S護(hù)和擴(kuò)展變得更簡單,并且可以大大提高程序開發(fā)效率 ,另外,基于面向?qū)ο蟮某绦蚩梢允顾烁尤菀桌斫饽愕拇a邏輯,從而使團(tuán)隊(duì)開發(fā)變得更從容。
面向?qū)ο蟮膸讉€(gè)核心特性如下
Class 類
一個(gè)類即是對(duì)一類擁有相同屬性的對(duì)象的抽象、藍(lán)圖、原型。在類中定義了這些對(duì)象的都具備的屬性(variables(data))、共同的方法
Object 對(duì)象
一個(gè)對(duì)象即是一個(gè)類的實(shí)例化后實(shí)例,一個(gè)類必須經(jīng)過實(shí)例化后方可在程序中調(diào)用,一個(gè)類可以實(shí)例化多個(gè)對(duì)象,每個(gè)對(duì)象亦可以有不同的屬性,就像人類是指所有人,每個(gè)人是指具體的對(duì)象,人與人之前有共性,亦有不同
Encapsulation 封裝
在類中對(duì)數(shù)據(jù)的賦值、內(nèi)部調(diào)用對(duì)外部用戶是透明的,這使類變成了一個(gè)膠囊或容器,里面包含著類的數(shù)據(jù)和方法
Inheritance 繼承
一個(gè)類可以派生出子類,在這個(gè)父類里定義的屬性、方法自動(dòng)被子類繼承
Polymorphism 多態(tài)
多態(tài)是面向?qū)ο蟮闹匾匦?簡單點(diǎn)說:“一個(gè)接口,多種實(shí)現(xiàn)”,指一個(gè)基類中派生出了不同的子類,且每個(gè)子類在繼承了同樣的方法名的同時(shí)又對(duì)父類的方法做了不同的實(shí)現(xiàn),這就是同一種事物表現(xiàn)出的多種形態(tài)。
編程其實(shí)就是一個(gè)將具體世界進(jìn)行抽象化的過程,多態(tài)就是抽象化的一種體現(xiàn),把一系列具體事物的共同點(diǎn)抽象出來, 再通過這個(gè)抽象的事物,,與不同的具體事物進(jìn)行對(duì)話。
對(duì)不同類的對(duì)象發(fā)出相同的消息將會(huì)有不同的行為。比如,你的老板讓所有員工在九點(diǎn)鐘開始工作, 他只要在九點(diǎn)鐘的時(shí)候說:“開始工作”即可,而不需要對(duì)銷售人員說:“開始銷售工作”,對(duì)技術(shù)人員說:“開始技術(shù)工作”, 因?yàn)椤皢T工”是一個(gè)抽象的事物, 只要是員工就可以開始工作,他知道這一點(diǎn)就行了。至于每個(gè)員工,當(dāng)然會(huì)各司其職,做各自的工作。
多態(tài)允許將子類的對(duì)象當(dāng)作父類的對(duì)象使用,某父類型的引用指向其子類型的對(duì)象,調(diào)用的方法是該子類型的方法。這里引用和調(diào)用方法的代碼編譯前就已經(jīng)決定了,而引用所指向的對(duì)象可以在運(yùn)行期間動(dòng)態(tài)綁定。
面向?qū)ο笕筇匦?#xff1a;封裝、繼承、多態(tài)
總結(jié)
以上是生活随笔為你收集整理的python支持多种编程范式吗_Python3学习之路~6.1 编程范式:面向过程 VS 面向对象...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python 某个数是不是在某个范围内_
- 下一篇: 如何用python32位开发词典软件_P