人生苦短,我選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 上,方便大家取用。