10.程式程式設計基礎4~變數&運算子

大牧莫邪發表於2017-05-17

上一章講解過了組合資料型別,本章進行變數以及各種程式設計需要的運算子的操作講解

3.3 變數部分 3.4 運算子部分;主要講解:賦值運算子、算數運算子、關係運算子、邏輯運算子、成員運算子、標識運算子

3.3. 變數

變數就是用來臨時存放資料的一個容器

3.3.1 變數的使用

python中的變數,不需要宣告即可使用 python中的變數命名:駝峰命名法,見名知意,只能是字母、數字和下劃線組成,變數第一個字元智慧是字母或者下劃線 ```

stockCount = 12; # 意義:庫存數量 12
price = 499.00; # 意義:單價為499.00
_pi = 3.1415; # 意義:定義了圓周率pi為3.1415
$name = 'jerry' # 錯誤:變數中不能包含$符號

```

3.3.2 變數的回收

變數一旦定義,在程式中也是使用記憶體空間來儲存資料的,所以當變數一旦不在需要使用,需要刪除變數釋放它佔用的記憶體空間,python中通過del關鍵字來刪除變數 ```

stockCount = 12; # 使用庫存變數
del stockCount; # 刪除變數stockCoutn
print (stockCount) # 報錯,stockCount變數未定義

```

這裡一定要注意,在Python中,認為一切都是物件,所以變數進行賦值時,其實就是python在記憶體中建立了這個物件,然後將物件在記憶體中的地址儲存在變數中了。 ```

count = 100;    # 記憶體中建立了一個物件,物件的資料是100
id(count);
結果:1867079904   # 表示count中存放的記憶體地址
count = 200;   # 記憶體中建立了一個物件200
id(count)
結果:1867560352 # 表示此時count中存放的記憶體地址

```

注意1:python將所有的資料都儲存為記憶體物件,變數其實就是指向物件的一個引用,只要需要,就可以讓變數隨時引用一個不同的物件 注意2:python內建了函式type(),用於檢測給定資料的資料型別 注意3:使用賦值符=等號,用來將一個變數和記憶體中的物件繫結起來,如果物件在記憶體中存在就直接繫結,否則賦值運算子後面的物件會被即時建立之後進行繫結。

那就存在問題了,建立的100和200這兩個資料,記憶體中進行了什麼樣的處理的呢? python將這樣沒有引用變數指向的物件,回收到了物件緩衝池(PS:物件緩衝池也是記憶體中的一個區域),方便下次使用的時候直接獲取,所以在使用python的時候,一定要注意記憶體洩漏的問題。關於python記憶體管理這一部分,後續會單獨進行講解

3.3.3. 變數的命名規則
  1. 只能包含字母、數字、下劃線,且不能以數字開頭
  2. 變數名稱區分大小寫,name和Name就是兩個不同的變數
  3. 禁止使用python2和python3的保留字
3.3.4. 特殊變數

以一個下劃線開頭的變數名稱,不會被import語句匯入 前後各有下劃線的變數名,是系統定義的變數名,有特殊含義 互動模式下,單個下劃線中儲存了最後的輸出表示式的結果

3.4.操作符

操作符,就是用於進行資料運算的符號 常見的操作符一般有賦值運算子、算數運算子、邏輯運算子、關係運算子等等

3.4.1. 賦值運算子
| 運算子| 描述           | 使用方式  |
| ------------- |:-------------:| -----:|
| =| 直接賦值 | a = 2   給a賦值資料2 |
| +=| 加法賦值運算 | a += 2   a原來的資料加2再賦值給a |
| -=| 減法賦值運算      |  a-=2  a原來的資料減去2再賦值給a |
| *= | 乘法賦值運算     |    a*=2  a原來的資料乘以2再賦值給a |
| /= | 除法賦值運算     |    a/=2 a原來的資料除以2再賦值給a |
| %= | 取餘賦值運算      |    a%=2  a原來的資料除以2,將餘數賦值給a |
| **= | 次方賦值運算    |   a**=2 將a原來的資料取2次方運算再賦值給a |
| //= | 地板除法運算    |    a//=3 將a原來的資料地板除以3將結果賦值給a  |
3.4.2. 算數運算子
| 運算子| 描述           | 使用方式  |
| ------------- |:-------------:| -----:|
| +| 加法運算 | 1 + 2  結果 3 |
| - | 減法運算      |  1 - 1 結果 0 |
| * | 乘法運算     |    12 * 12 結果 144 |
| / | 除法運算     |    10 / 3 結果 3.333333 |
| % | 取餘運算      |    10 / 3 結果 1 |
| ** | 次方運算    |    10 ** 2 結果 100 |
| // | 地板除法運算    |    10 // 3 結果 3 |

注意 在Python2中,除法運算和地板除法運算是一個結果 在python3中,除法運算和地板除法運算結果不一樣

3.4.3. 關係運算子

關係運算子,通過比較運算子兩邊的資料,返回一個布林型別的結果

| 運算子| 描述           | 使用方式  |
| ------------- |:-------------:| -----:|
| >| 大於運算 | 1> 2  結果 False |
| < | 小於運算      |  1 < 2 結果 True |
| >= | 大於等於運算     |    12 >= 12 結果True |
| <= | 小於等於運算     |    12 <= 11 結果 False |
|<> | 不等於運算      |    10 <> 3 結果 True |
| != | 不等於運算    |    等同於<> ,如10 != 10,結果False |
| == | 等於運算    |    10 == 3 結果 False |
3.4.4. 邏輯運算子
| 運算子| 描述           | 使用方式  |
| ------------- |:-------------:| -----:|
| and| 並且運算 | True and False  結果 False |
| or| 或者運算     |  True or False 結果 True |
| not | 非運算     |   not False 結果True |

注意 這裡的邏輯運算子,python中只有and|or|not,在其他語言中,也有類似&&、||、!的符號來表示and、or、not的三種關係的 and/&&:並且運算,當運算子兩邊的資料都為True才返回True,否則返回False or/||:或者運算,當運算子兩邊的資料都是False才返回False,否則返回True not/!:非運算,對結果進行取反,如果為True結果為False,如果為False則結果為True

3.4.5. 成員運算子

成員運算子,主要用於判斷某個成員是否出現在某個物件中

| 運算子| 描述           | 使用方式  |
| ------------- |:-------------:| -----:|
| in| 如果在指定的變數中找到則為True,否則為False| jiaoYue in heros |
| not in| 如果在指定的變數中沒有找到返回True     |  jiaoYue not in heros |

實際操作如下 ```

heros = ["皎月女神", "暴走蘿莉", "機械先驅", "九尾妖狐"]
feiCi = "潮汐海靈";
jiaoYue = "皎月女神";
feiCi in heros;
結果:False
jiaoYue in heros;
結果:True

``` 成員運算子的使用

3.4.6. 標識運算子

標識運算子,主要用於兩個不同的變數資料型別的檢測

| 運算子| 描述           | 使用方式  |
| ------------- |:-------------:| -----:|
| is| 如果運算子兩邊的變數指向相同的物件則為True| a is b |
| is not| 如果運算子兩邊的變數指向不同的物件則為True | a is not b |

```

a = 12;
b = 12;
a is b
結果:True
a is not b 
結果:False

```

相關文章