Python變量與運算符

1.變量的命名規則  (c1.py)

# 變量 (命名要求,可讀性強)

# 1.規則
    # 1.1首字符不能爲數字
    # 1.2可以包含  數字,字母,下劃線  ,不能以數字開頭
    # 1.3系統中的關鍵字(系統中的關鍵字也叫保留關鍵字,例如:if,and,import等等),不能用在變量名裏
    # 1.4雖然type,print等 不是系統保留關鍵字,但如果將其作爲變量(作爲變量時,不報錯),就不能當函數方法使用了,禁止將其作爲變量名使用
# type = 3
# print(type)
    # 然後再將其作爲判斷數據方法使用就會報錯
# print(type(type))

    # 1.5區分大小寫  (eg:a=1,A=1不同)
    # 1.6Python中對變量沒有類型限制
        # (eg:a=1,a='1',a=[1,2],可以給一個變量賦不同類型的值;在其它的一些編程語言中,在變量定義時就得聲明其類型)
        # 所以Python也稱爲動態語言(和JavaScript有點類似)
    # 1.7也會存在深淺拷貝
        # 1.7.1值類型(int,float,str,tuple等,不可變),淺拷貝
        # 1.7.2引用類型(set,list,dict,可改變),深拷貝
# a = [1,2]
# b = a
# a[0] = 2
# print(b)
        # 1.7.3對於下例子中的a,並不是a改變了,而是生成了一個新的字符串,將這個新生成的字符串賦給a。可以通過id()來查看一下變量的內存地址
# a = 'hello'
# print(id(a))        # 31203824                      
# a = a + ' world'
# print(id(a))        # 31425584 (內存地址改變了)
# print(a)         # hello world

        # 1.7.4  list 和 tuple  
# a = [1,2,3]
# print(id(a))        #1794696
# a[0] = 2
# print(id(a))        #1794696 (內存地址未改變)
# b = (1,2,3)
# b[0] = 2            # 這種寫法就報錯了,元組是不可變類型;同時對於不可變類型,也沒有 . 操作符

# 對於可變類型list還可使用 . 操作符
# c = [1,2,3]
# c.append(4)
# print(c)            #[1, 2, 3, 4]

        # 1.7.5 對於大型項目,會存在相互調用,有些不想在別人調用時改變,就可使用tuple(一變就會報錯),更安全;如果需要動態改變,就用list
# a = (1,2,[1,2,3])
# print(a[1])         # 2
# print(a[2][2])      # 訪問第三項裏的3,使用雙重下標
# # a[0] = 2            # 不能改變
# a[2][2] =2          # 可以改變list項中的某一項

2.Python運算符總括  (c2.py)

# Python運算符

# 1.算數運算符
print('hello '+'world')
print([1,2,3]*3)
print(3-1)
print(3/2)
print(3//2)
print(5%2)
print(2**2)
print(2**3)
print(2**4)

# 2.賦值運算符
# =
# +=
# *=
# /=
# %=
# **=
# //=

# 3.比較(關係)運算符
# ==
# !=
# >
# <
# >=        (大於或者等於)
# <=        (小於或者等於)

# 4.邏輯運算符
# and       (且(與),有一個爲False則爲False,否則爲True)
# or        (或,有一個爲True則爲True,否則爲False)
# not       (非,)

# 5.成員運算符 (一個元素是否在另一組元素裏;返回值是bool類型)
# in
# out in

# 6.身份運算符      (如果兩個變量取值相等,則is返回True)
# is
# is not

# 7.位運算符        (把數字當做二進制數進行運算)
# &                 (按位與)
# |                 (按位或)
# ^                 (按位異或)      
# <<                (左移動)
# >>                (右移動)


# 8.優先級大方向 (最終的優先級順序,可查百度(後須自己再驗證一下,因爲資料也不一定特別準))
# 算數(+,-,*,/,%,//,**)  >  比較(關係,==,+=)  >  邏輯(not > and > or)

3.Python運算符詳解  (c3.py)

# 1.賦值運算符  (終點在賦值)

# c = 1
# c = c + 1
# print(c)
    # 1.1其它語言中還有  c++(自增),c--(自減)運算符,但Python中沒有
# c += 1
# print(c)

# a = 3
# b = 2
# b += a
# print(b)
# b -= a
# print(b)
# b *= a
# print(b)

# d = 2
# e = 3
    # 1.2 d+e 和 d += e 的最大區別是,前者只運算(運算前後,各自變量的值不變),後者不僅運算且賦值(運算過後d的值改變)

# 2.比較(關係)運算符      (最終返回一個bool值)
    # 2.1 右結合 (首先b>=1爲True,然後b+=True,即b=b+True,最後得到結果)
# b = 1
# b+=b>=1
# print(b)        # 2

    # 2.2字符串也可比較,比較的是ASCII碼,獲取字符的ASCII碼可以通過 ord()獲取
# print('a'>'b')          #False
# print(ord('a'))         # 97
# print(ord('b'))         # 98

# print('abc'<'abd')      # True  (從前往後,c的ASCII碼小於d的ASCII碼)
# print([1,2,3]<[2,1,3])  #True   (第一項的1小於後邊第一項的2)
# print((1,2,3)<(2,1,3))  #True   (第一項的1小於後邊第一項的2)

# 3.邏輯運算符      (最終返回一個bool值)
    # 3.1
# print(True and True)        #True
# print(True and False)       #False
# print(True or False)        #True
# print(False or False)       #False
# print(not False)            #True
# print(not True)             #False

    # 其它類型和bool類型存在一個轉化關係,雖然下邊例子,得到一些結果
# print(1 and 1)                #1
# print('a' and 'b')            #b
# print('a' or 'b')             #a
# print(not 'a')                #False

    # 3.2其它類型對應的bool類型
        # int float         0  被認爲False;非0  被認爲True
        # str               空字符串  被認爲是False;非空字符串  被認爲True
        # list              []空列表  被認爲是False;非空列表    被認爲True
        # tuple,set,dict    遵循和列表相同的規則

# print([1] or [])    #[1]
# print([] or [1])    #[1]
# print('a' and 'b')  #b
# print('' and 'b')   #''

    # 3.3 and (返回)
    # 第一項爲真會看第二項
    # 第一項爲假直接返回第一項
    # 第一項和第二項都爲真,返回第二項
# print(1 and 0)      #0
# print(0 and 1)      #0
# print(1 and 2)      #2
# print(2 and 1)      #1

    # 3.4 or (返回)
    # 第一項爲真直接返回第一項
    # 第一項爲假會看第二項
    # 第一項和第二項都爲真,返回第一項
# print(1 or 0)       #1
# print(0 or 1)       #1
# print(1 or 2)       #1
# print(2 or 1)       #2

# 4.成員運算符
# print(1 in [1,2,3,4])       #True
# print(6 in [1,2,3,4])       #False
# print(1 in (1,2,3,4))       #True
# print(1 in {1,2,3,4})       #True

    # dict  中看的是key是否存在,不會檢測value
# print('name' in {'name':'石敢當','age':18})     #True
# print(18 in {'name':'石敢當','age':18})         #False

# 5.身份運算符      (對象的三個特徵:值,身份,類型)  (在Python中一切皆對象)
    # 5.1   如果兩個變量取值相等,則is返回True
# a = 1
# b = 2
# c = 1
# print(a is b)
# print(a is c)

    # 5.2 is 和 == 
        # 5.2.1在某些情況結果相同,有些情況有一定區別
        # 5.2.1 == 關係運算符比較的是兩個變量的值是否相等;而is比較的是兩個變量的身份(即id地址)是否相等
# a = 1
# b = 1
# c = 1.0
# print(a is b)       #True       (相同)
# print(a == b)       #True       (相同)
# print(a is c)       #False      (不同)
# print(a == c)       #True       (不同)
# print(id(1))        #8791043924816
# print(id(1.0))      #5615736

        # 5.2.2
# a = {1,2,3}
# b = {2,1,3}
# print(a == b)       #True       (集合是無序的,順序不影響值的大小比較)
# print(a is b)       #False      (is 是身份的比較,通過id獲取,不同)
# print(id(a))        #31992968   
# print(id(b))        #32047624

# c = (1,2,3)
# d = (2,1,3)
# print(c == d)       #False      (元組是序列,是有序的,書序會影響取值)
# print(c is d)       #False      (is 是身份的比較,通過id獲取,不同)
# print(id(c))        #34693408   
# print(id(d))        #34693624

    # 5.3類型的判斷
        # 5.3.1通過 type 來判斷   (不能判斷子類,不太推薦)
# a = 'hello'
# print(type(a) == str)       #True
# print(type(a) == int)       #False

        # 5.3.2通過 isinstance 來判斷
            # 5.3.2.1 isinstance(被判斷的變量,類型)
# print(isinstance('hello',str))      #True

            # 5.3.2.2 isinstance(被判斷的變量,(類型1,類型2,類型3))  (後邊接一個元組,滿足其一即可)
# print(isinstance('hello',(str,int,bool,dict)))      #True

        # 5.3.3對象的三個特徵(重要)   (身份id,值value,類型type   分別對應三種運算關係    is,==,isinstance)

# 6.位運算符
    # 6.1 按位與 &
# a = 2
# print(bin(a))       #0b10
# b = 3
# print(bin(b))       #0b11
# print(a & b)        #ob10  (即轉爲十進制爲2)

    # 6.1 按位或 |
# a = 2
# print(bin(a))       #0b10
# b = 3
# print(bin(b))       #0b11
# print(a | b)        #ob11  (即轉爲十進制爲3)

(備註:以上內容來自七月老師的學習筆記,僅作爲學習使用)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章