2019年11月15日 星期五

夠Python,Python的變數是標籤名稱而不是容器本身



為何這些年大家都在談Python?為何Python能成為程式語言排名第一名?為何Python能把C和Java從王座拉下來?這些答案就留給大家去思考。

今天我們先來談談Python的變數,變數是電腦的記憶體中一個小小的容器,電腦要存取記憶體的資料,必須先用位址匯流排送出位址,也就是指定容器的編號,再經由資料匯流排來讀取容器的內容。

由上面說明,我們知道一般程式語言的變數都是使用這個觀念,以C語言為例:

int x, y;

其示意圖如下圖所示:


當我們把資料放到容器中,

x=42;
y=42;

其結果如下圖:

若我們把y設定為78,

y=78;

但Python是採用物件參考(Object References)方式來設計變數,也就是Python的變數是標籤名稱而不是容器本身。注意一下,雖然標籤名稱,但不是貼在容器上的標籤,而是用獨立的物件。大家可以參考下列文章:

Data Types and Variables:https://www.python-course.eu/python3_variables.php

我們整理出一些觀念,說明如下:
C的程式一般程式宣告用法
int x;

x=42;

Python程式一般程式用法

x=42

要留意一下,Python變數使用前不用事先宣告。



另外設定變數y為x變數,其程式如下:

y=x




當我們把78放到y變數時,

y=78

y本身不變,但會再建立一個容器來放78。

當我們把"Text"放到x變數,系統會另外產生一個新的容器來存放"Text"內容。

x = "Text"

此時放有整數42容器,會被系統自動做垃圾回收,Python語言最大好處,您不用管記憶體回收的問題,只要專注在程式功能實現上。



(圖出處:https://www.python-course.eu/python3_variables.php)


下圖為C和Python對陣列變數上的不同,這也就是為什麼Python允許,把整數和字串同時放到同一個陣列中,但C不行(注意!C不是不能做到,Python的做法C也可以做到,只是要寫更多行的指令,這也是為什麼有人常說Python比C來得簡潔)。


(圖出處:https://chatasweetie.com/2015/10/23/week-1/)

沒有留言:

張貼留言