小知識(shí)點(diǎn)補(bǔ)充
比較變量?jī)?nèi)存地址和獲取變量?jī)?nèi)存地址
a = 1
b = a
print(a is b) #輸出:True,比較2個(gè)變量是否是同一個(gè)內(nèi)存地址
id(a) #獲取變量a的內(nèi)存地址
小數(shù)據(jù)池
為了節(jié)省內(nèi)存,當(dāng)多個(gè)int或str類型的值相同時(shí),且符合以下要求時(shí),都會(huì)是指向同一個(gè)內(nèi)存地址。
int:-5至256
str:1.不能含有特殊字符;2.不能*int超過(guò)21;
集合
集合的特點(diǎn)是:元素必須是可哈希的,不重復(fù),且無(wú)序。但集合本身是不可哈希的。
set1 = {1,2,3}
set1.add(4) #添加
set1.update('567') #添加多個(gè)
set1.pop() #隨機(jī)刪除
set1.remove(3) #按照元素刪除,不存在報(bào)錯(cuò)
set1.clear() #清空
del set1 # 整個(gè)刪除
集合沒(méi)有索引,只能循環(huán)讀取。
集合的計(jì)算:
a = {1,2,3}
b = {2,3,4}
a - b 差集
a & b 交集
a | b 并集
a ^ b 反交集
a > b 超集
a < b 子集
frozenset(set1) 不可變集合
深淺拷貝
s1 = [1,2,3,[4,5]]
s2 = s1 #同一個(gè)內(nèi)存地址
s2 = s1.copy # 淺拷貝,只copy一層,從第二層開(kāi)始共用一個(gè)內(nèi)存地址
s2 = copy.deepcopy(s1) #深拷貝,無(wú)論第幾層全是不同的內(nèi)存地址
文件操作
操作流程:1.打開(kāi)文件產(chǎn)生文件句柄,2.對(duì)文件句柄進(jìn)行讀寫(xiě)操作,3.關(guān)閉文件。
f1 = open('test.txt', encoding='utf-8', mode=r) # 打開(kāi)文件
f1.read() #讀取文件全部?jī)?nèi)容
f1.close() # 關(guān)閉文件
f1.readable() #是否可讀
f1.writeable() #是否可寫(xiě)
f1.seek() #設(shè)置光標(biāo)位置
f1.tell() #獲取光標(biāo)位置
函數(shù)
函數(shù)的定義:
def 函數(shù)名:
函數(shù)體
函數(shù)的執(zhí)行:
函數(shù)名()
函數(shù)的終止
返回None:
return
return None
返回單個(gè)值:
return a
返回多個(gè)值:會(huì)將多個(gè)值打包到一個(gè)元組中返回
return a,b
形參:
位置參數(shù):按順序一一對(duì)應(yīng)
默認(rèn)參數(shù):必須在位置參數(shù)的后面,不傳參時(shí),自動(dòng)取默認(rèn)值。
動(dòng)態(tài)參數(shù):args包含所有的位置參數(shù)的元組;*kwargs包含所有的關(guān)鍵字參數(shù)的字典
實(shí)參:
位置參數(shù):按照位置一一對(duì)應(yīng)
關(guān)鍵字參數(shù):按照關(guān)鍵字一一對(duì)應(yīng)
混合參數(shù):關(guān)鍵字參數(shù)必須要在位置參數(shù)的后面