python學習筆記1 理解Python語言

2021-07-23 20:05:40 字數 2295 閱讀 9775

本章主要介紹一下python語言的相關知識,包括其語言型別、作為物件導向的3大特性以及5大原則,在末尾介紹了其優缺點。

與c/c++等編譯型語言相比,python語言的程式並不是首先編譯成二進位制機器碼後執行,而是由python解析器解釋一句並在python虛擬機器中執行一句,直到程式結束或者丟擲錯誤。這種方式使得程式開發人員不用過多的關心庫的鏈結、編譯錯誤等問題,這些都由直譯器和虛擬機器代勞,大大的減少了開發時間。

指令碼語言也稱動態語言,不需要事先將程式編譯,可以動態的部署,即在控制台中輸入一句執行一句。這種動態性在一定的程度上簡化了「開發、部署和除錯」的時間。

在python中,一切皆是物件,比如乙個函式、乙個類、甚至是乙個模組、乙個檔案。在python中,乙個物件一般由屬性和方法組成,屬性即該物件包含的變數,方法即實現對該物件的操作,例如增、刪、查、改。例如實現乙個圓的物件,其屬性包含圓形座標和半徑,其方法有建立乙個圓(初始化)、修改半徑或者圓形、刪除這個圓、或者在介面上畫出其影象。

物件導向的程式語言,肯定具備封裝、多型以及繼承的三大特性

所謂封裝,也就是把客觀事物封裝成抽象的類,並且類可以把自己的資料和方法只讓可信的類或者物件操作,對不可信的進行資訊隱藏。封裝是物件導向的特徵之一,是物件和類概念的主要特性。簡單的說,乙個類就是乙個封裝了資料以及操作這些資料的**的邏輯實體。在乙個物件內部,某些**或某些資料可以是私有的,不能被外界訪問。通過這種方式,物件對內部資料提供了不同級別的保護,以防止程式中無關的部分意外的改變或錯誤的使用了物件的私有部分。在python中,預設所有屬性都是公有的,要想設定為私有,需要在屬性前面加上__(兩個下劃線),例如__time。

簡單的理解多型,就是物件可以根據輸入的不同,響應不同的輸出。正式一些的說法就是乙個類例項的相同方法在不同情形有不同表現形式。多型機制使具有不同內部結構的物件可以共享相同的外部介面。這意味著,雖然針對不同物件的具體操作不同,但通過乙個公共的類,它們(那些操作)可以通過相同的方式予以呼叫。

所謂繼承是指可以讓某個型別的物件獲得另乙個型別的物件的屬性的方法。它支援按級分類的概念。繼承是指這樣一種能力:它可以使用現有類的所有功能,並在無需重新編寫原來的類的情況下對這些功能進行擴充套件。通過繼承建立的新類稱為「子類」或「派生類」,被繼承的類稱為「基類」、「父類」或「超類」。繼承的過程,就是從一般到特殊的過程。要實現繼承,可以通過「繼承」(inheritance)和「組合」(composition)來實現。繼承概念的實現方式有二類:實現繼承與介面繼承。實現繼承是指直接使用基類的屬性和方法而無需額外編碼的能力;介面繼承是指僅使用屬性和方法的名稱、但是子類必須提供實現的能力;

是指乙個類的功能要單一,不能包羅永珍。如同乙個人一樣,分配的工作不能太多,否則一天到晚雖然忙忙碌碌的,但效率卻高不起來。

乙個模組在擴充套件性方面應該是開放的而在更改性方面應該是封閉的。比如:乙個網路模組,原來只服務端功能,而現在要加入客戶端功能, 那麼應當在不用修改服務端功能**的前提下,就能夠增加客戶端功能的實現**,這要求在設計之初,就應當將服務端和客戶端分開,公共部分抽象出來。

子類應當可以替換父類並出現在父類能夠出現的任何地方。比如:公司搞年度晚會,所有員工可以參加**,那麼不管是老員工還是新員工, 也不管是總部員工還是外派員工,都應當可以參加**,否則這公司就不和諧了。

這個時候,b不應當直接使用a中的具體類: 而應當由b定義一抽象介面,並由a來實現這個抽象介面,b只使用這個抽象介面:這樣就達到 了依賴倒置的目的,b也解除了對a的依賴,反過來是a依賴於b定義的抽象介面。通過上層模組難以避免依賴下層模組,假如b也直接依賴a的實現,那麼就可能造成迴圈依賴。乙個常見的問題就是編譯a模組時需要直接包含到b模組的cpp檔案,而編譯b時同樣要直接包含到a的cpp檔案。

模組間要通過抽象介面隔離開,而不是通過具體的類強耦合起來。

python的語法比較符合人類的習慣,所以讀**的時候有一種讀英語的感覺。python的本質是偽**,初衷就是希望開發人員能夠專注於問題本身而不受程式語言的限制。 python的資料結構一共有3種:序列(列表、元組、字串)、字典(對映)、集合。對於每一種的資料結構的操作(增刪查改)的語法都差不多,非常的方便。

python採用強制縮排的方式作為程式間隔,一般縮排為4個空格。這樣的好處是**容易閱讀而且非常的簡潔。

由於python的開源性,可以很容易的閱讀原始碼,並且自由的發布軟體。

如果你需要你的一段關鍵**執行得更快或者希望某些演算法不公開,你可以把你的部分程式用c或c編寫,然後在你的python程式中使用它們。你可以把python嵌入你的c/c程式,從而向你的程式使用者提供指令碼功能。

python的庫非常多,基本各個領域都有非常有效的庫,這些庫給開發人員帶來了極大的方便。

相對於c等編譯型語言,python在執行速度(尤其是計算速度)稍慢,但是可以用c重寫大量計算的部分**,再用python呼叫,可以提公升速度。

py學習筆記

1.切片 list l l 2 4 l 1 10 2 同matlab l 複製 tuple 0,1,2,3,4 0 3 字串2.print 預設換行 print x 不換行print x,print y,orprint x,y 3.變數賦值 不需要型別宣告 gg 100.0 i,lov,u 233,...

py入門筆記1

例題1.1 註記 a為teacher類,b為course類。class a definit self name age self.teacher name name self.teacher age age self.salary 2000 設定乙個不需外部傳遞引數的屬性salary class b...

erlang學習理解筆記(1)

第乙個併發程式實驗 檔案程式的伺服器 afile server.erl 檔案 module afile server 模組名稱 export start 1,loop 1 要匯出的方法 別的模組可以呼叫 start dir spawn afile server,loop,dir spawn是建立乙個...