Python是什麼?
它的構建者Guido van Rossum說:
“high-level programming language, and its core design philosophy is all about code readability and a syntax which allows programmers to express concepts in a few lines of code.”
翻譯過來就是:“Python是一種高級編程語言,核心設計思想在於代碼的易讀性,方便程序員只需幾行代碼來表達概念含義”
如今Python是數據科學,機器學習,深度學習或者網絡編程的主流編程語言,也是一個美麗的編程語言,所以我們來很快的學習一下。如果你有一點編程基礎,那接下來的內容會讓你瞬間瞭解Python的全貌。
基礎
- 變量variables
簡單來講,變量就是一個值。
在Python裡,很容易定義一個變量並賦予它一個值,比如:
定義一個變量one,並給它賦值為1.
好了,下面你就可以照貓畫虎了,比如我們可以定義以下變量:
變量two等於2, some_number等於10000
變量可以有不同的類型,比如布爾變量,字符串,浮點數等:
- 控制流,條件語句Control Flow: conditional statements
if語句通過緊跟它的表達式的真偽來判斷應該執行什麼語句,比如:
如果2大於1,就打印
2 is greater than 1.
加else,相當於if後面的表達式不成立,我們就執行else,比如:
1肯定比2小,所以,我們會執行else後面的語句打印
1 is not greater than 2
還可以加elif,說明不止一種條件了,比如:
- 循環Looping/iterator
Python裡的循環有兩種方式:While或者for
while循環,如果while緊跟的條件表達式為true,就會循環執行直到條件表達式為false。比如:
當num小於等於10時,都會執行打印,直到num等於11結束循環。
for循環,會有一個固定的變量區間來循環,比如:
我們通過for循環實現了以上while循環一樣的結果。簡單。
列表:集合 | 陣列 | 數據結構List: Collection | Array | Data Structure
通過以上學習我們知道變量只能存儲一個值,如果我們需要存儲很多值,比如上百萬個,我們除了去定義上百萬個變量這種方法以外,我們還可以使用列:
列表List是一種集合能用於儲存一列值,比如:
你的問題來了,那麼怎麼獲得其中任何一個值呢,我們想象索引的概念,我們從0開始編序,意思就是第0個值等於1,第一個值等於2,以此類推,在Python裡面我們這樣獲取:
如果你其實是要把想吃的水果存起來,比如:
現在你知道定義一個列,並怎麼提取某一個值,你的問題又來了,我要增加一個怎麼加?
我們通常使用append來增加,超級簡單,比如:
字典:鍵值數據結構
Dictionary: Key_Value Data Structure
有些情況你無法單純的使用數字作為索引時,我們來看看字典結構,比如:
可以看到,字典結構可以由key1,key2,key3作為索引,每一個對應一個Value來配對出現,想象一下我們怎麼來獲取每一對值呢?
我們先來給大熊貓創建一個字典,比如:
這裡name,color,gender,age構成了字典結構裡的keys,而與其配對的yuanyuan,blackwhite,male,2構成了字典結構裡的values。
你的問題又來了,我們怎麼給熊貓字典裡增加一個他的伴侶名字呢? 很簡單,直接加:
迭代:基於數據結構的循環 iteration:Looping through Data structure
比如上面我們要打印所有我喜歡的水果,我們可以使用循環for:
要打印熊貓字典,我們也可以使用for循環:
或者你可以使用key,value:
這裡要說明一點是,並不是非要使用key這個名字,你可以使用其他任何,比如我們使用attr,同樣有效:
類和對象Class & Object
來點理論先:
對象Object就是現實世界裡的對象,比如車,房子,公園,貓,狗等等,對象具有兩個基本特診:數據Data和行為Behavior。
車子的數據可以是輪子數,車門數,幾人座等等,行為可以是啟動,停車,加油,顯示油量等等。
在基於對象的編程環境裡,我們把數據Data視為屬性Attributes,而把行為Behavior視為方法Methods,一個類可以看作為一個對象的抽象,一個對象就是一個類的實例,比如所有的車都具有同樣的類,雪佛蘭,福特是車這個類的兩個實例。
下面我們來具體看看Python中如何來表示, 我們定義一個類car:
下面我們定義一個對象,比如福特車:
ford就是car這個類的一個實例,前面我們講了這個類的屬性,我們來寫出來:
這裡init就是一個方法,它是一個構造方法,下面我們就來實例化我們的福特車:
4個輪子,汽油引擎,4座,最大速度140邁。
我們需要繼續定義方法,以便我們可以獲取對象中的某一個屬性,這就是對象的一個行為,比如:
number_of_wheels獲取輪子數, set_number_of_wheels用於設置輪子數。
在Python中,我們也可以使用@property來定義獲取和設置:
我們來使用一下他們,在對象ford裡:
多簡單,可以獲取輪子數,然後我們又可以修改為2個。
聰明的你估計已經發現了些微的差別,當我們修改輪子數時,2並不是一個參數,而是直接賦值了,這是一種寫pythonic的setter和getter代碼的方法。
封裝:隱藏信息 Encapsulation: Hiding Information
顧名思義,就是限制對於一個對象中數據和方法的直接訪問,換句話講,就是一個對象中的所有的內在表現方式,比如方法,數據,都被隱藏,不被外部所見。
讓我們來理解一下public和non-public實例變量和方法的區別:
公共實例變量Public Instance variables
我們能夠在一個Python類的構造方法裡初始化一個公共實例變量,比如:
first_name是一個公共實例變量,
如果我們是在一個類裡定義,比如:
那麼我們就不需要上面那樣去賦值,因為所有的類對象實例都會被初始化:
好了,你已經瞭解了簡單的公共實例變量,和類屬性,公共實例變量是可以被修改的,這是它的特點,注意,比如:
非公共實例變量Non-public Instance Variable
顧名思義,這些就是定義在類中,無法從外部直接進行修改或者獲取的變量,一般會有一個下劃線作為頭部:
注意看_email, 這就是一個非公共實例變量,我們同樣可以定義和使用:
也可以通過方法來進行:
還是剛才的例子,我們增加註釋便於大家看清楚差別,瞭解非公共實例變量的使用和限制:
公共方法Public Method
同理,公共方法的意思就是我們可以在類外直接使用,比如:
測試一下,
私有方法non-Public Method
同非公共實例變量一樣,頭部使用下劃線_, 同樣的屬性,我們定義私有方法如下:
在對象中調用這個私有方法:
私有方法不能通過對象名直接調用,只能在實例方法中通過 self 調用或者外部通過 python 支持的特殊方法來調用。
Python 中,函數和方法是有區別的。方法一般指特定實例綁定的函數,通過對象調用方法時,對象本身將被作為第一個參數傳遞過去,普通函數沒有此特點。
繼承:行為和特徵 Inheritance:behavior and character
繼承的意思就是對象是可以繼承父對象的方法和屬性的,就好比兒子繼承了父親的大眼睛,塌鼻子,身高出眾等等特徵,同時也繼承了父親的壞脾氣,內向這樣的行為。
在面向對象的編程中,一個類可以繼承另一個類的方法和數據,比如,我們回到上面那個車的類,我們定義一個電動車electric_car的新類,它可以繼承車的類car:
對於這個新類,我們並不需要定義父類已有的方法,而是直接使用就行:
總結一下
- Python的變量如何工作
- Python的條件語句
- Python的循環語句
- 怎麼使用列
- 字典鍵值集合
- 數據結構裡的循環操作
- 對象和類
- 對象屬性
- 對象行為方法
- Python的getters,setters以及@property
- 封裝隱藏信息
- 繼承行為和特徵
當你對於Python有了一個籠統但相對基本的認知後,你就會根據自己的需求有選擇的就某個知識點進行深入再學習和鞏固,於是順利的開進無論讀別人代碼或者自己寫代碼的優美旅程中。
閱讀更多 Celeneli 的文章