1.復(fù)習(xí)
1.1:容器類型:字典武鲁、列表橘沥、元祖和集合
1.1.1列表(list)
- a.有序:(可以通過下標(biāo)取獲取元素)魁袜、可變(增刪改)养渴、列表中的元素可以是
可以是任何數(shù)據(jù)類型的數(shù)據(jù) - b.列表的相關(guān)操作:增刪改查
- C.列表的相干運(yùn)算:+ , * 难咕,in和not in ,len()
- d相關(guān)方法
1.1.2字典(dict):
可變的(增刪改)课梳、key:唯一的,不可變的值value:無要求余佃,任何數(shù)據(jù)類型都可以
- a.相關(guān)操作:增刪改查
- b.相關(guān)運(yùn)算:in 和 not in 暮刃, len()
- c. 字典d的相關(guān)運(yùn)算
1.1.3元祖(tuple):
有序,不可變爆土,元素可以是任何類型
a.查和列表一樣
b.只有一個元素的元祖:(12,)
c.獲取元祖的元素:x椭懊,y=(100,200)==>x,y=100,200
d.函數(shù) a雾消,b=b,a
1.1.3.集合(set)
- 無序的灾搏,可變的,元素是不可變的立润,
- 支持?jǐn)?shù)學(xué)的集合運(yùn)算(包含狂窑,交集,并集桑腮,查集泉哈,補(bǔ)集)文檔
1.2函數(shù)
- 1函數(shù)的聲明(格式和步驟)--函數(shù)聲明的時候不會執(zhí)行函數(shù)體
def 函數(shù)名(參數(shù)列表):
函數(shù)的說明
函數(shù)體
2函數(shù)的調(diào)用(格式和調(diào)用過程)
函數(shù)名()
變量()
列表下標(biāo)
字典[key]
3參數(shù)相關(guān):位置參數(shù)、關(guān)鍵字參數(shù)破讨、參數(shù)的默認(rèn)值丛晦、不定長參數(shù)
4返回值:a.執(zhí)行到return,結(jié)算函數(shù)提陶,返回return后面的
返回值5匿名函數(shù):格式
6遞歸函數(shù)
7函數(shù)作為變量使用:申明函數(shù)的時候?qū)嶋H是在分明一個類型是function的變量
2. 文件操作
2.1 基本過程
1打開文件 - 操作 - 關(guān)閉文件
-
2.open(路徑烫沙,打開方式,encoding=編碼方式)
a.絕對路徑(了解隙笆,從來不使用)
b.相對路徑
c. 打開方式:r,br--讀 w,wb,a---讀
?? ? ? 在打開文件時锌蓄,如果指定的路徑不存在時,以讀的方式打開會報錯撑柔,以寫的方式打開表示新建一個文件
d.**設(shè)置編碼:utf-8,gbk**
注意:如果是以二進(jìn)制的方式(rb瘸爽、wb)單開文件是,就不能設(shè)置
編碼方式
2.2文件的讀和寫
read()/readline()--讀(位置會記憶) 打開的是一個文件對象
write() ---寫(會覆蓋原來的內(nèi)容铅忿,也可以接著下剪决,a)
4.關(guān)閉文件
如果不關(guān)閉,有可能會出現(xiàn)會有問題
2.3打開文件和關(guān)閉文件的簡寫
-
with open(路徑檀训,打開方式柑潦,encoding=編碼方式)
以這種方式打開,文件操作完成后肢扯,會自動關(guān)閉
with open('./wl.png','rb') as ff:
content=ff.read()
#bytes是python中內(nèi)置的數(shù)據(jù)類型妒茬,用來表示二進(jìn)制數(shù)據(jù)
print(content,type(content))
#將數(shù)據(jù)寫入文件(下載圖片)
with open('./venv/w2.png','wb') as f:
#wb(將二進(jìn)制寫入文件)下載圖片
f.write(content)
3.json文件
json是有特定格式的格式的一種文本形式,它有自己的語法
json文件就是后綴名為 .json的文本文件
3.1 json格式對應(yīng)的數(shù)據(jù)類型及其表現(xiàn)
素數(shù) | 格式 | 意義 |
---|---|---|
對象(object) | {鍵值對} | 相當(dāng)于字典 |
數(shù)組(array) | [元素] 元素是任何數(shù)據(jù)類型 | 相當(dāng)于列表 |
數(shù)字(number) | 100 蔚晨、0乍钻、0.2 | 包含整數(shù)和小數(shù) |
字符串(string) | "abc"(只能雙引號) | 就是字符串 |
布爾 | trun、false(只能小寫 | 是/否 |
null | null | 空值 |
- 注意:
- 一個json文件中只能存一個數(shù)據(jù)铭腕,這個數(shù)據(jù)類型必須是以下7種數(shù)據(jù)類型中的一個
- import json:json模塊是python中內(nèi)置的银择,專門處理json文件的一個模塊
3.2 json轉(zhuǎn)python
json | Python |
---|---|
對象 | 字典 |
數(shù)組 | 列表 |
數(shù)字 | 整數(shù)和浮點(diǎn)數(shù) |
布爾(tru/false) | boll(True/false) |
null | None |
1.json.load(json文件對象):以json的格式,獲取文件的內(nèi)容,然后轉(zhuǎn)換成相應(yīng)的python數(shù)據(jù)
with open('./json2.json','r',encoding='utf-8') as f: #以讀的方式打開一個json文件
content=json.load(f) #讀取json文件中的內(nèi)容累舷,轉(zhuǎn)化成python格式并賦值給變量content
print(content)
2.json.loads(json格式內(nèi)容的字符串浩考,編碼方式):將json格式的字符串轉(zhuǎn)換成python對應(yīng)的數(shù)據(jù)
content1=json.loads('"qwerty"',encoding='utf-8') #將json格式的字符串"qwerty"轉(zhuǎn)換正python格式并賦值給content1
print(content1,type(content1))
-
注意:
json格式的字符串必須是雙引號 " "
json格式的true/false,必須是小寫
3.3 python轉(zhuǎn)json
python | json |
---|---|
字典 | 對象 |
列表被盈、元祖 | 數(shù)組 |
整數(shù)析孽、浮點(diǎn)數(shù) | 數(shù)字 |
布爾(True?False) | true/false |
字符串 | 字符串(雙引號) |
None | null |
- 1.dump(需要寫入json中的python數(shù)據(jù)搭伤,json文件對象) ---寫操作
with open('./new.json','w',encoding='utf-8') as f:
json.dump((1,2,3,4,123,1233),f)
- 2.dumps(需要轉(zhuǎn)換成json格式字符串的python數(shù)據(jù))---單純轉(zhuǎn)換,將python數(shù)據(jù)轉(zhuǎn)換成json格式
content2=json.dumps('123,12,87,887')
print(content2,type(content2))
注意:
python中的集合數(shù)據(jù)不能轉(zhuǎn)換成json數(shù)據(jù)
4.異常捕獲
4.1什么情況用異常捕獲...
a.輸入兩個數(shù)袜瞬,求這兩個數(shù)的商是多少
num1=float(input('除數(shù)'))
num2=float(input('被除數(shù)'))
print(num1/num2)
用戶輸入除數(shù)是 用戶輸了個 20a,就會報錯怜俐,這個時候我們不希望程序崩潰,而是輸出提示
b.打開一個不存在的文件邓尤,不希望程序崩潰拍鲤,只是讀出的內(nèi)容為空
with open('./text11111.json','r')as f:
content=json.load()
總結(jié):
- 程序出現(xiàn)某種異常,但是不想因?yàn)檫@個異常 而讓這個程序崩潰汞扎,帶來不好的用戶體驗(yàn)季稳,這個時候就可以使用異常捕獲機(jī)制。
2.怎么捕獲異常
- 形式1:捕獲try后面代碼塊里面的所有異常(用的并不多)
try:
需要捕獲的異常代碼塊(可能會出現(xiàn)異常的代碼塊)
except:
出現(xiàn)異常后的執(zhí)行代碼
???????執(zhí)行過程澈魄,一次執(zhí)行try后面的代碼塊景鼠,一旦遇到異常就馬上執(zhí)行except后,后面的代碼塊一忱,執(zhí)行完之后再執(zhí)行其他的語句莲蜘;如果try里面的代碼塊沒有出現(xiàn)異常就不執(zhí)行except后面的代碼塊,而是直接執(zhí)行其他語句
- 形式2:
try:
需要捕獲的異常代碼塊(可能會出現(xiàn)異常的代碼塊)
except:(錯誤類型2帘营,錯誤類型2) #只要這兩種錯誤類型哪一個出現(xiàn)都會執(zhí)行except后面的代碼
出現(xiàn)異常后的執(zhí)行代碼
- 形式3:
try:
需要捕獲異常的代碼塊(可能會出現(xiàn)異常)
except 錯誤類型1:
執(zhí)行語句塊1
except 錯誤類型2:
執(zhí)行語句塊2
except 錯誤類型3:
執(zhí)行語句塊3
- 形式4
try:
需要捕獲異常的代碼塊(可能會出現(xiàn)異常)
except 錯誤類型1:
執(zhí)行語句塊1
finally:
不管有沒有異常票渠,就算前面已經(jīng)崩潰了也會執(zhí)行
(在這做程序異常退出時的善后,一般做保存數(shù)據(jù)和進(jìn)度的工作)