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)
(備註:以上內容來自七月老師的學習筆記,僅作爲學習使用)