###### tags: `chapter 2` `Python`
# 2-2 認識變數 #
如果說一個寫python的環境(jupyter、PyCharm)是一個機械製造廠,那變數就是裡面的螺絲,你需要各種不同的螺絲才可以組裝出你期望的精密機械,在python和其他所有的程式語言世界裡,你會需要變數來協助你完成你的程式。

螺絲分成很多種螺絲,變數也是,分成很多種`型態`,不同型態的變數是無法混合使用的哦!

變數底層的運作大致上是從記憶體要到一塊空間,然後在裡面存放程式運行中的值,就像是你取出螺絲,那桌子(記憶體)上一定要有地方給螺絲(變數)放。實際上的運作則有點複雜,也不是重點,但你只要記得`變數是用來存放程式運行中產生的值`即可,就像是前一小節我們變數比喻為成績欄,那`成績欄就是用來存放這張考卷的成績`。
### 宣告一個變數 ###
如果你想宣告一個變數,你只要很簡單的打上你賦予他的名字,以及最一開始的值即可。
假設小明今天想宣告一個變數叫做`hourly salary`(時薪)。
```python=
hourly_salary = 150
```
根據上述程式,可以發現小明時薪是150元(!?)
有了這個變數的知識,搭配上四則運算,就可以很輕鬆的算出小明的月薪了!!!
```python=
hourly_salary = 150
total_hours_this_month = 50
print("這個月的月薪是" , hourly_salary * total_hours_this_month , "元")
print("今年的年薪是", hourly_salary * 50 * 12, "元")
print("一個月有", 24 * 30 - total_hours_this_month, "個小時沒在上班")
```
**Q**:這樣子的好處在哪裡呢?
**A**:當今天小明的時薪或著時長改變,我們只需更動變數內的值就可以收工了!
**假設場景**:小明加薪了!現在的`hourly_salary`是300元。
```python=
# 使用變數概念
hourly_salary = 300 # 從原本的150改為300
total_hours_this_month = 50
print("這個月的月薪是" , hourly_salary * total_hours_this_month , "元")
print("今年的年薪是", hourly_salary * 50 * 12, "元")
print("一個月有", 24 * 30 - total_hours_this_month, "個小時沒在上班")
```
```python=
# 「不使用」變數概念
print("這個月的月薪是", 300 * 50, "元") # 手動調整
print("今年的年薪是", 300 * 50 * 12, "元") # 手動調整
print("一個月有", 24 * 30 - 50, "個小時沒在上班") # 沒有使用到時薪,不用調整
```

關於變數的命名有一定的規則:
* 必須由英文字母、底線( _ )開頭和組成
* 大小寫必須分割,Name和name是兩個不同的變數
* Python系統保留字(關鍵字)是無法當作變數名稱的

如果想知道這顆螺絲(變數)放在桌上(記憶體)的哪個位置,我們可以利用`id()`這個函式,讓python告訴我們他在哪。
```python=
hourly_salary = 150
print(id(hourly_salary))
```
輸出結果可能每台電腦都不太一樣,因為每台電腦分配的位置可能都不同。