Update learn-python-on-microbit-zh.md

This commit is contained in:
Alan Wang
2021-02-08 17:46:39 +08:00
committed by GitHub
parent 4dba83c739
commit 028a339edb

View File

@@ -1,4 +1,4 @@
# BBC micro:bit 學 Python
# BBC micro:bit 學 Python:免費、免安裝的完全入門指南
Alan Wang, Feb 2021
@@ -265,13 +265,26 @@ NameError: name 'a' isn't defined
### Python 變數是個「路牌」
現在要來講一個比較難懂、但仍然非常重要的觀念,因為這能解釋 Python 變數在賦值時的極大彈性。
現在要來講一個比較難懂、但仍然非常重要的觀念,因為這能解釋 Python 變數在賦值時的獨特特性。
在許多程式語言中,變數是個容器,實際上就是記憶體裡的一個空間,然後把值存在那裡面。既然是事先指定的空間,你只能用它來儲存特定類型的資料。
在許多程式語言中,變數是個容器,實際上就是記憶體裡的一個空間,然後把值存在那裡面。既然是事先指定的空間,你只能用它來儲存特定類型的資料。但 Python 的做法卻剛好相反:值本身已經存在於記憶體中某處了,你所做的其實是做一個「路牌」來指向它。
但 Python 的做法卻剛好相反:值本身已經存在於記憶體中某處了,你所做的其實是做一個「路牌」來指向它。
以 ```a = 1``` 為例,整數 1 其實已經存在於記憶體內,我們只是新增一個名稱 a 來代表它:
```a = 1``` 為例,整數 1 其實已經存在於記憶體內,我們只是新增一個名稱 a 來代表它。而當你執行 ```a = 2``` 時,路牌 a 會指向記憶體中的整數 2。這時整數 1 仍然存在,只是除了直接寫出 1 以外,我們沒有別的方式能引用 1。換言之變數可以指向任何資料就算途中改變資料的類型也無謂
```
a ---> 1
```
而當你執行 ```a = 2``` 時,路牌 a 會指向記憶體中的整數 2。這時整數 1 仍然存在,只是除了直接寫出 1 以外,我們沒有別的方式能引用 1。
```
1
a ---> 2
```
> 整數 1 和 2 等等是特例,它們是 Python 一開始就擁有的資料。有些資料則是由使用者在執行程式期間建立的。
換言之,變數可以任意指向任何資料,就算途中改變資料的類型也無謂:
```
>>> a = 1
@@ -282,9 +295,7 @@ NameError: name 'a' isn't defined
'test'
```
上面 a 一開始是整數,後來變成字串了。事實上 Python 變數可以指向各種東西,其彈性
> 當然,整數 1 和 2 等等是特例,它們是 Python 一開始就擁有的資料。有些資料是由使用者在執行程式期間建立的。這些資料
上面 a 一開始是整數,後來變成字串了。當然,太任意更改變數指向的資料類型,只會把程式搞得更複雜而已。最好還是把不同功能的變數分開宣告,讀起來也比較容易懂。
### Python 變數的命名規則
@@ -298,10 +309,8 @@ Python 變數的命名非常自由,除了不能用數字開頭以外,可以
Python 變數名稱也支援 Unicode因此使用中文、日文或各國語言都是可行的。使用非 Unicode 特殊字元會產生錯誤。不過,一般習慣上還是會以英數為主,而且最好能清楚反映變數本身的用途。
當然還有一個你不應該做的事,就是使用 Python 內建功能的名稱來當變數。這會導致那個名稱指向了你給予的資料,結果原本的功能就沒辦法用了,可能還會導致程式錯誤。
當然還有一個你不應該做的事,就是使用 Python 內建功能的名稱來當變數。這會導致那個名稱指向了你給予的資料,結果原本的功能就沒辦法用了,說不定還會導致程式錯誤。
(持續寫作中...