小白學 Python(6):基礎運算符(下)

人生苦短,我選Pythonpython

前文傳送門git

小白學 Python(1):開篇github

小白學 Python(2):基礎數據類型(上)編程

小白學 Python(3):基礎數據類型(下)編程語言

小白學 Python(4):變量基礎操做函數

小白學 Python(5):基礎運算符(上)spa

前言

上一篇文章咱們介紹了算術運算符和比較運算符。本篇咱們繼續介紹其他的幾個:設計

  • 賦值運算符
  • 邏輯運算符
  • 成員運算符
  • 身份運算符

賦值運算符

Python 中,使用 = 號表示賦值。固然,Python 還提供了其餘賦值方式,直接幫咱們簡化了寫法,如 +=-= ,沒有編程經驗的同窗可能會比較懵逼。3d

其實小編當年在學 Java 的時候第一次接觸也是很懵的,這裏其實無需懵逼,簡單理解 a += 1 其實就是 a = a + 1 。這只是一種簡化寫法。code

題外話(建:有編程經驗人士閱讀,無編程經驗能夠跳過):

在不少編程語言中如 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 上,方便你們取用。

示例代碼-Github

示例代碼-Gitee

若是個人文章對您有幫助,請掃碼關注下做者的公衆號:獲取最新干貨推送:)
相關文章
相關標籤/搜索