一 OOP函數
與C++和Java同樣,Python一樣具備OOP設計。編碼
過程式:從前到後,一條一條,機器能接受的順序性方式;方式大概爲「首先你應該作什麼,第二應該作什麼,高級點的作點假設若是遇到什麼狀況要作什麼,或者一件事情要作多少多少遍,… …,」spa
OOP式:從「類與對象」方式來抽象和理解世界。例如首先物體(Object)大概能夠分爲「生物」與「非生物」,「生物」又能分爲「人、動物、植物」等,「人」又分爲「男人,女人」等。。。大天然在世界之巔,不斷分類設定。相似於「族譜」,上下之間能「繼承」。設計
類與對象。類是抽象的,是一羣的概述,對象是具體的,獨立的,例如我存在一個獨立的人。對象擁有所在類的屬性和方法,一樣擁有屬於本身對象的屬性(方法)。指針
現實世界中,類擁有屬性(attribute)和行爲(action);抽象數據中,類擁有數據(data)和方法(method)。類之間,存在繼承(inheritance)與改良,類與對象之間,存在實例化。在實例化以後,對象可以在繼承的類成員以外,增長屬於本身的數據成員。對象
二 Python OOP繼承
末 Python 中的坑內存
Python 很強大,坑也很多,一個一個填吧。it
一 Python 處理中文及編碼方式io
Python3.0以前,因爲編碼的緣故,處理中文夾雜狀況,十分痛苦。要想完全讓它不是問題,第一,理解編碼方式之間轉換;第二,幾個實際例子在手。
二 Python基礎語法
1. 淺拷貝賦值,傳值與傳地址調用
首先看兩個例子,關於一個函數參數爲int和list兩種類型時的不一樣操做,以增長++一個值爲例。
# 傳值value參數a = 1def change_integer(a):
a = a + 1return a
# 傳地址address參數b = [1,2,3]def change_list(b):
b[0] = b[0] + 1return b
# test valueprint change_integer(a)
print 'a = ',a
print change_list(b)
print 'b[0] = ',b[0]
#Result:>a = 1>b[0] = 2
第一個integer例子中,將一個int類型變量傳遞給函數,原整型變量a不發生變化。
第二個list例子中,將一個list類型變量傳遞給函數,原listb會發生變化。
緣由在於,對於基本數據類型(例如int),函數會在內存中複製一個新的變量,從而不影響原來變量,這叫「值傳遞」;
對於list來講,並不屬於基本變量,函數傳遞的是一個指針,指向序列在內存中的地址,從而影響原來的值,稱爲「指針傳遞」。
同理,對於matrix或者array類型的數據,也屬於非基本類型,所以array_a = array_b這樣行爲,array_b作操做時一樣會影響到array_a,特別注意!!