本節我們接着講動態類型和靜態類型:
這個系列教程建議對照着視頻學習,以下僅爲課件內容。
本節課程的視頻和實例源碼下載方式:點擊->我的主頁,查看個人簡介。
我儘量堅持每日更新一節。
編程語言從代碼到能夠運行通常需要經過編譯和運行兩個階段,Python雖然是解釋性語言,也不例外。源碼.py通過編譯,生成字節碼文件.pyc。.pyc是一系列指令,這些指令通過python虛擬機PVM來執行。
我們根據檢查變量數據類型的時機,將編程語言分爲動態類型語言和靜態類型語言。
靜態類型:在編譯階段檢查變量的數據類型,比如C、Java等。對於這種類型的語言,我們需要在代碼中定義變量的數據類型,不管是顯式的聲明還是隱式的定義。靜態類型語言的變量,一旦定義了數據類型,在運行時是不能動態改變的。比如C語言,它的典型用法如下:
void main()
{
int score1 = 0; // 變量score1在使用之前需要聲明爲int類型,否則編譯報錯
int score2 = 50;
score1 = score2 + 10;
// ......
}
動態類型:在運行階段才檢查變量的數據類型。Python就是一種動態類型語言,它的變量不需要聲明數據類型,只有在運行時才動態確定其類型。通過上一節的幾個小實驗我們其實可以看出來,python的變量本質上是一個內存地址,本身沒有類型,它的數據類型由其指向的對象來決定。比如下面的例子,在python中是可以正常運行的:
# 此時,tmp是一個整數類型
tmp = 100
print(type(tmp))
# 此時,tmp是一個字符串類型,類型可以動態改變
tmp = "hello, world!"
print(type(tmp))
它的輸出是:
<class 'int'>
<class 'str'>
這種動態類型的特性,讓python使用起來會更加簡單,代碼會更加簡潔。但是它也會帶來一些負面影響,比如無法在編譯階段發現問題,同時動態類型會帶來運行時的一部分性能損耗。兩者各有利弊。我們在使用python編程時,也建議隨時搞清楚變量對應的數據類型,這樣可以規避一些隱藏的問題。
本節課程的視頻和實例源碼下載方式:點擊->我的主頁,查看個人簡介。
我儘量堅持每日更新一節。