一 變數
python中的變數與c/c++中的變數不同。在c/c++中,變數的本質就是記憶體的位址,但在python中,當我們定義一個變數並賦值時,如下:
a='ABC'
python的解釋器乾了兩件事情: (1)在記憶體中建立一個'ABC'的字串;(2)在記憶體中再建立一個名為a的變量,並把它指向'ABC'。也就是說,python佔用的記憶體比c/c++中要多。這裡一定要正確python中定義變數的處理。
二 編碼
對於編碼的問題,有歷史因素在裡面。由於電腦最初是在美國製造,故最早只是把常用的127個字元編碼到了計算機裡,也就是ASCII碼。但在後來的發展中,還需要處理像中文這樣的字符,此時單一位元組就不夠用了,至少需要使用2個位元組。為了處理全世界所有的語言,就發明了Unicode來解決這個問題。 Unicode通常使用2個位元組表示一個字符,個別偏僻的可能需要用到4個位元組。
引入Unicode雖然解決了多種語言的編碼問題,但是在使用中還是存在資源浪費的問題。如果統一使用Unicode編碼,但是所有的文字都是英文的話,那豈不是要浪費很多記憶體?為了解決這個問題,後來引入了UTF-8編碼。在UTF-8編碼中,會把Unicode字元依照字元需要佔用的位元組數來分配,例如英文字母就編碼成1個位元組,漢字通常是3個位元組。這樣就可以節省很多內存了。
三 list和tuple
list和tuple都是python內建的一資料型別。其差別在於tuple是一旦初始化後就不可以再更改了。定義一個list如下:
#define a list
l=['Michael','Luffy','Nancy']
list是一種有序的集合,與c/c++中的數組一樣,下標從0開始,可以隨時對其進行新增和刪除其中的元素。可以對list進行的操作有:append(),insert(),pop()和[]。
當然list是可以嵌套定義的,如下:
#define a nest list
l=['Michael','Luffy','Nancy', ['Corey','Jason']]
t=('Michael','Luffy','Nancy')
t=('Michael','Luffy','Nancy',['Corey','Jason'])
t[3][0]='Jefrey'
t[ 3][1]='Avery'