python支持多種編程范式嗎_Python3學習之路~6.1 編程范式:面向過程 VS 面向對象...

編程范式

編程是程序員用特定的語法+數據結構+算法組成的代碼來告訴計算機如何執行任務的過程,一個程序是程序員為了得到一個任務結果而編寫的一組指令的集合,正所謂條條大路通羅馬,實現一個任務的方式有很多種不同的方式,對這些不同的編程方式的特點進行歸納總結得出來的編程方式類別,即為編程范式。不同的編程范式本質上代表對各種類型的任務采取的不同的解決問題的思路, 大多數語言只支持一種編程范式,當然也有些語言可以同時支持多種編程范式。兩種最重要的編程范式分別是面向過程編程和面向對象編程。

面向過程編程(Procedural Programming)

Procedural programming uses a list of instructions to tell the computer what to do step-by-step.

面向過程編程依賴procedures(過程),一個procedure包含一組要被進行計算的步驟,面向過程又被稱為top-down languages, 就是程序從上到下一步步執行,一步步從上到下,從頭到尾的解決問題 。基本設計思路就是程序一開始是要著手解決一個大的問題,然后把一個大問題分解成很多個小問題或子過程,這些子過程再執行的過程再繼續分解直到小問題足夠簡單到可以在一個小步驟范圍內解決。

舉個典型的面向過程的例子,數據庫備份,分三步,連接數據庫,備份數據庫,測試備份文件可用性。

代碼如下

def db_conn():

print("connecting db...")

def db_backup(dbname):

print("導出數據庫...",dbname)

print("將備份文件打包,移至相應目錄...")

def db_backup_test():

print("將備份文件導入測試庫,看導入是否成功")

def main():

db_conn()

db_backup('my_db')

db_backup_test()

if __name__ == '__main__':

main()

這樣做的問題也是顯而易見的,就是如果你要對程序進行修改,對你修改的那部分有依賴的各個部分你都也要跟著修改, 舉個例子,如果程序開頭你設置了一個變量值 為1 , 但如果其它子過程依賴這個值 為1的變量才能正常運行,那如果你改了這個變量,那這個子過程你也要修改,假如又有一個其它子程序依賴這個子過程 , 那就會發生一連串的影響,隨著程序越來越大, 這種編程方式的維護難度會越來越高。

所以我們一般認為, 如果你只是寫一些簡單的腳本,去做一些一次性任務,用面向過程的方式是極好的,但如果你要處理的任務是復雜的,且需要不斷迭代和維護的, 那還是用面向對象最方便了。

面向對象編程(Object Oriented Programming)

面向對象編程(OOP編程)是利用“類”和“對象”來創建各種模型來實現對真實世界的描述,使用面向對象編程的原因一方面是因為它可以使程序的維護和擴展變得更簡單,并且可以大大提高程序開發效率 ,另外,基于面向對象的程序可以使它人更加容易理解你的代碼邏輯,從而使團隊開發變得更從容。

面向對象的幾個核心特性如下

Class 類

一個類即是對一類擁有相同屬性的對象的抽象、藍圖、原型。在類中定義了這些對象的都具備的屬性(variables(data))、共同的方法

Object 對象

一個對象即是一個類的實例化后實例,一個類必須經過實例化后方可在程序中調用,一個類可以實例化多個對象,每個對象亦可以有不同的屬性,就像人類是指所有人,每個人是指具體的對象,人與人之前有共性,亦有不同

Encapsulation 封裝

在類中對數據的賦值、內部調用對外部用戶是透明的,這使類變成了一個膠囊或容器,里面包含著類的數據和方法

Inheritance 繼承

一個類可以派生出子類,在這個父類里定義的屬性、方法自動被子類繼承

Polymorphism 多態

多態是面向對象的重要特性,簡單點說:“一個接口,多種實現”,指一個基類中派生出了不同的子類,且每個子類在繼承了同樣的方法名的同時又對父類的方法做了不同的實現,這就是同一種事物表現出的多種形態。

編程其實就是一個將具體世界進行抽象化的過程,多態就是抽象化的一種體現,把一系列具體事物的共同點抽象出來, 再通過這個抽象的事物,,與不同的具體事物進行對話。

對不同類的對象發出相同的消息將會有不同的行為。比如,你的老板讓所有員工在九點鐘開始工作, 他只要在九點鐘的時候說:“開始工作”即可,而不需要對銷售人員說:“開始銷售工作”,對技術人員說:“開始技術工作”, 因為“員工”是一個抽象的事物, 只要是員工就可以開始工作,他知道這一點就行了。至于每個員工,當然會各司其職,做各自的工作。

多態允許將子類的對象當作父類的對象使用,某父類型的引用指向其子類型的對象,調用的方法是該子類型的方法。這里引用和調用方法的代碼編譯前就已經決定了,而引用所指向的對象可以在運行期間動態綁定。

面向對象三大特性:封裝、繼承、多態

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/537532.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/537532.shtml
英文地址,請注明出處:http://en.pswp.cn/news/537532.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Spring框架知識復習之二

Spring使用注解對Bean進行管理 1 使用注解需配置aop相關xsd文件的約束和命名空間 xsd文件名為&#xff1a;spring-aop-4.2.xsd 2 注解組件掃描配置 示例如下&#xff1a;base-package屬性 設置掃描指定包下的所有子孫包 <context:component-scan base-package"cn.itma.…

比較合理的項目組織架構

&#xff08;從自己從業經驗中總結所得&#xff09; PMO就像是操作系統&#xff0c;項目組1...N就像進程&#xff08;開啟多個軟件&#xff09;&#xff0c;項目任務就像線程&#xff0c;項目組成員就像CPU&#xff08;具體干活的&#xff09;&#xff0c;CPU資源是有限的&…

python培訓一般要多久_入門 Python 要多久時間?該如何學習?

入門 Python 要多久?該如何學習? 學Python和學其他的語言其實是相同的&#xff0c;我給新同事講課的時候就說學編程和練武功其實是很相似&#xff0c;入門大致這樣幾步: 找本靠譜的書, 找個靠譜的師傅&#xff0c; 找一個地方開始練習。 學語言也是的&#xff1a;選一本通俗易…

小計 合計 總計 共計 怎么解釋?

排列順序&#xff1a;小計、總計、合計。共計分開使用。 小計&#xff1a;小計就是簡單核算一下單個體&#xff0c;可理解為日小計 合計&#xff1a;合計就是把所有小計加起來&#xff0c;可理解為月合計 總計&#xff1a;總計就是把合計加起來&#xff0c;可理解為年總計 …

巧用位運算存狀態

2019獨角獸企業重金招聘Python工程師標準>>> 某種場景需要,一個事物 有多種狀態并列存在的時候,或者權限,我們可以使用 |,&,~ 來處理,具體代碼如下: package com.example.demo;/*** 權限狀態處理*/ public class StatusUtil {/*** 判斷狀態是否開啟* param fl…

工時單位天與人天的區別?

售前工作時&#xff0c;向甲方提供報價單是必需的&#xff0c;報價要有依據。 當提供的報價單的工時單位是&#xff08;人/天&#xff09;的時候&#xff0c;需要向甲方額外解釋下&#xff0c;人/天人數*天數。比如&#xff1a;編碼開發&#xff0c;40人天&#xff0c;投入1位…

python怎么做項目_聽說你沒有python項目可做,我教你個方法

原標題&#xff1a;聽說你沒有python項目可做&#xff0c;我教你個方法 學習了一段時間的Python&#xff0c;最近出現了“饑荒”&#xff0c;感覺需要多看些代碼&#xff0c;多學習學習別人做些什么&#xff0c;但卻不知道做點什么來進行練習。 說到看代碼&#xff0c;我就想到…

Linux系統CPU相關信息查詢

Linux系統CPU相關信息查詢 作者&#xff1a;尹正杰 版權聲明&#xff1a;原創作品&#xff0c;謝絕轉載&#xff01;否則將追究法律責任。 一.lscpu常用參數介紹 1>.查看幫助信息 [rootnode105 ~]# lscpu -h-a, –all: 包含上線和下線的cpu的數量&#xff0c;此選項只能與選…

excel下拉讓函數參數部分不變

原理 使用相對引用就會變&#xff0c;bai使用絕對引用du就不變 A1是相對引用&#xff0c;上下拉公式的時候會zhi變成A2,A3…… $A$1是行列絕對引用dao&#xff0c;上下拉公式的時候不會變化 $A1&#xff0c;是行絕對引用&#xff0c;上下拉公式的時候會變化&#xff0c;$A2&am…

select * 排除字段_編寫 SQL 的排除聯接

有兩個表&#xff0c;就叫作源表和目標表吧。它們有一個相同的字段&#xff0c;通過該字段可以把源表和目標表關聯在一起&#xff0c;我們希望從源表中檢索到的記錄里的關聯字段的值沒有存在目標表中。舉個例子&#xff0c;源表 dept&#xff0c;目標表 emp&#xff0c;獲取 de…

JS中調用bignumber處理高精度小數運算

ignumber.js用于數字精度要求較高的計算。 bignumber.js源碼地址&#xff1a;https://github.com/MikeMcl/bignumber.js 1.下載bignumber.js。 下載地址&#xff1a;https://github.com/MikeMcl/bignumber.js/releases 2.引入js。 3.示例 html: <div><label>數1&am…

centos8安裝搜狗輸入法_搜狗拼音輸入法去廣告版

搜狗輸入法是搜狗公司2006年6月推出的一款漢字輸入法工具。與傳統輸入法不同&#xff0c;搜狗輸入法是第一款為互聯網而生的輸入法——它通過搜索引擎技術&#xff0c;將互聯網變成了一個巨大的“活”詞庫。應該有許多人電腦上都裝了吧&#xff0c;不過一般下載的版本天天彈廣告…

Project查看資源分配情況

選擇 資源圖表&#xff0c;點擊 格式&#xff0c;在圖表里選擇

webbrowser實現input tab事件_如何合理構造一個Uploader工具類(設計到實現)

作者&#xff1a;Chaser (本文來自作者投稿) 原文地址&#xff1a;https://juejin.im/post/5e5badce51882549652d55c2源碼地址&#xff1a;https://github.com/impeiran/Blog/tree/master/uploader前言本文將帶你基于ES6的面向對象&#xff0c;脫離框架使用原生JS&#xff…

小達人點讀筆的任我貼貼紙怎么使用?

小達人點讀筆是一款高性能、高容量點讀筆。其自身的開放性、共享性、傳播性讓可讀書籍及音頻資源真正的達到了海量且優質有用。 下面我們來認識一下標配中任我貼上的貼紙&#xff1a; 智能貼 用于已經布有二維碼的有聲圖書的封面&#xff0c;比如律動英語&#xff0c;成長一線&…

vscode必備插件_10個必備的Visual Studio Code (VS code)插件

我基本上每天都用vs code&#xff0c;我喜歡的小巧&#xff0c;開源&#xff0c;免費并且非常強大。尤其它非常多的插件可以免費使用。這里我把經常用插件介紹給大家&#xff0c;希望大家留言討論我把VS code 插件分兩類&#xff0c;一類是處理可視化的&#xff0c;比如說顏色&…

軟考官方教材:信息系統項目管理師教程(第三版)

2020年下半年信息系統項目管理師考試官方教材將繼續使用清華大學出版社出版的信息系統項目管理師教程第3版&#xff08;特別注意&#xff0c;有某些輔導資料也打著信息系統項目管理師教程第3版的旗號&#xff0c;各位考生一定要看準官方指定教材是由全國計算機專業技術資格考試…

centos掛載windows共享目錄

2019獨角獸企業重金招聘Python工程師標準>>> 在windows中創建一個共享文件夾記住這個網絡路徑&#xff0c; 在centos上新建文件夾/mnt/MyShare $> mkdir /mnt/MyShare掛載 username用戶名.password登錄密碼 $> Sudo mount -t cifs -o username用戶名,pass…

博閱likebook alita專用pdf制作

適合博閱likebook alita帶手寫的。 先上效果圖&#xff0c;左邊是正文&#xff0c;右邊有留白可以寫讀書筆記 這樣做有什么好處&#xff1f; pdf從閱讀器里復制出來&#xff0c;在電腦打開&#xff0c;筆記也會有。筆記是直接記錄在pdf上的&#xff0c;相當于pdf上的批注。 …

esc鍵沒反應_有機人名反應——Brown 硼氫化反應(Brown Hydroboration)

Brown 硼氫化反應&#xff08;Brown Hydroboration&#xff09;反應機理鏈接&#xff1a;http://chem.kingdraw.cn/Shortlink?id20200624161301Brown硼氫化反應&#xff0c;是指乙硼烷在醚類溶液中離解成的甲硼烷以B-H鍵與烯烴、炔烴的不飽和鍵加成&#xff0c;生成有機硼化合…