小白學 Python(6):基礎運算符(下)
- 2019 年 10 月 25 日
- 筆記
人生苦短,我選Python
前文傳送門
前言
上一篇文章我們介紹了算術運算符和比較運算符。本篇我們繼續介紹其餘的幾個:
- 賦值運算符
- 邏輯運算符
- 成員運算符
- 身份運算符
賦值運算符
Python 中,使用 =
號表示賦值。當然,Python 還提供了其他賦值方式,直接幫我們簡化了寫法,如 +=
, -=
,沒有編程經驗的同學可能會比較懵逼。
其實小編當年在學 Java 的時候第一次接觸也是很懵的,這裡其實無需懵逼,簡單理解 a += 1
其實就是 a = a + 1
。這只是一種簡化寫法。
題外話(建:有編程經驗人士閱讀,無編程經驗可以跳過):
在很多程式語言中如 Java ,都會有自增 i++ 這種寫法,但是 Python 並沒有,這是因為
+=
是代表改變了變數,相當於重新生成了一個變數,把操作後的結果賦予這個新生成的變數。但是在 Python 中,變數是以內容為基準而不是像 Java 中以變數名為基準,所以只要你的數字內容是 5 ,不管你起什麼名字,這個變數的 ID 是相同的,同時也就說明了 Python 中一個變數可以以多個名稱訪問。這樣的設計邏輯決定了 Python 中數字類型的值是不可變的,例如:a 和 b 都是 5,當你改變了 a 時,b 也會跟著變,這當然不是我們希望的。
Python 中的賦值表達式可見下表:
運算符 | 描述 |
---|---|
= | 賦值運算符 |
+= | 加法賦值運算符,c += a 等效於 c = c + a |
-= | 減法賦值運算符,c -= a 等效於 c = c – a |
*= | 乘法賦值運算符,c = a 等效於 c = c a |
/= | 除法賦值運算符,c /= a 等效於 c = c / a |
%= | 取模賦值運算符,c %= a 等效於 c = c % a |
**= | 冪賦值運算符,c = a 等效於 c = c a |
//= | 取整除賦值運算符,c //= a 等效於 c = c // a |
上面的表格光看描述總感覺有點乾巴巴的,下面我們還是來舉幾個栗子給各位同學演示一下:
a = 10 b = 20 c = a + b print("c = a + b 的值為:", c) c += a print("c += a 的值為:", c) c *= a print("c *= a 的值為:", c) c /= a print("c /= a 的值為:", c) c = 2 c %= a print("c %= a 的值為:", c) c **= a print("c **= a 的值為:", c) c //= a print("c //= a 的值為:", c)
運行結果如下:
c = a + b 的值為: 30 c += a 的值為: 40 c *= a 的值為: 400 c /= a 的值為: 40.0 c %= a 的值為: 2 c **= a 的值為: 1024 c //= a 的值為: 102
邏輯運算符
邏輯運算符有三種,分別是與、或、非。
這個其實是離散數學中的概念,不知道其他專業的同學有沒有學,反正學電腦的肯定有這門課。emmmmmmmmmmmmm 我們其實是 Python 教程,就不扯離散數學了,有興趣的同學請自行百度吧。
- and :邏輯「與」運算符,只有當and兩邊都是真,結果才是真
- or :邏輯「或」運算符,只要當or一邊的是真的,結果就是真
- not :邏輯「非」運算符,反轉邏輯值
這麼看介紹有點抽象,我們直接上栗子,看了栗子大家就懂了,其實很簡單。
print(True and True) # True print(True and False) # False print(True or True) # True print(True or False) # True print(False or False) # False print(not True) # False print(not False) # True
成員運算符
成員運算符用來判斷在指定的序列中有沒有找到目標值,這個序列可以是字元串、列表和元祖。
- in : 如果在指定的序列中找到值返回 True,否則返回 False。
- not in : 如果在指定的序列中沒有找到值返回 True,否則返回 False。
前面的文章尚未介紹列表和元祖,下面的示例僅使用字元串來做演示:
str = "asdfghjkl" if 'a' in str: print('a 在字元串 str 中') else: print('a 不在字元串 str 中') if 'a' not in str: print('a 不在字元串 str 中') else: print('a 在字元串 str 中')
輸出結果:
a 在字元串 str 中 a 在字元串 str 中
身份運算符
身份運算符用於比較兩個對象的存儲單元。
- is : is 是判斷兩個標識符是不是引用自一個對象
- is not : is not 是判斷兩個標識符是不是引用自不同對象
示例如下:
a = 20 b = 20 if a is b: print("a 和 b 有相同的標識") else: print("a 和 b 沒有相同的標識") if id(a) == id(b): print("a 和 b 有相同的標識") else: print("a 和 b 沒有相同的標識") # 修改變數 b 的值 b = 30 if a is b: print("a 和 b 有相同的標識") else: print("a 和 b 沒有相同的標識") if a is not b: print("a 和 b 沒有相同的標識") else: print("a 和 b 有相同的標識")
注意: id()
函數用於獲取對象記憶體地址。
輸出結果如下:
a 和 b 有相同的標識 a 和 b 有相同的標識 a 和 b 沒有相同的標識 a 和 b 沒有相同的標識
其實這個輸出結果可以看出來,在 Python ,如果兩個數值一樣的變數, Python 並不會在記憶體中重新開闢記憶體空間,而是會復用已有的記憶體空間。
示例程式碼
本系列的所有程式碼小編都會放在程式碼管理倉庫 Github 和 Gitee 上,方便大家取用。