模組的形象:
內建模組:安裝python直譯器的時候一起安裝上的
第三方模組(擴充套件模組):需要自己安裝
自定義模組:自己寫的py檔案
序列的物件:列表,元組,字串,bytes
序列化的定義:把乙個資料型別轉換成字串,bytes型別的過程
為什麼要把資料型別序列化
當你需要把乙個資料型別儲存在檔案中的時候
當你需要把乙個資料型別通過網路傳輸的時候
使用eval() 有風險,所以一般情況下不能使用
應用場景:
在網路操作中,以及多語言環境中,要傳遞字典,數字,字串,列表等簡單的資料型別的時候使用。
優點:對於所有語言都通用
缺點:只支援數字,字串,列表,字典(key值必須是可hash的,即不可變的資料型別)的資料型別
importjson
stu =
ret = json.dumps(stu,ensure_ascii=false) #
序列化的過程
#ensure_ascii=false 希望序列化的中文能以中文的形式被現實並且寫到檔案中
print(ret,type(ret)) #print(stu,type(stu)) #
l1 = json.loads(ret) #
反序列過程
print(l1,type(l1)) #
import json
方法 dumps() 序列化 loads()反序列化
dumps() dic--->str 序列化方法
loads(str) str----> dic/list 反序列化方法
dump(dic/lis,f) dic/list------->檔案,序列化方法
load(f) 檔案中-----》dic/list 反序列化方法。可以進行多次dump進入檔案中的資料,但是load會報錯
引數:ensure_ascii=false 希望序列化的中文能以中文的形式被顯示並且寫入檔案中
與json方法相同,只是轉化型別不同
dump與load 操作檔案的時候必須以+b開啟
在load的時間,如果這個要被load的內容不再記憶體中,程式會報錯的
pickle支援多次dump和多次load (load的時候需要進行異常處理)
importpickle
class
course:
def__init__
(self,name,price):
self.name =name
self.price =price
python = course('
python
',29800)
linux = course('
linux
',25800)
mysql = course('
mysql
',18000)
defmy_dump(course):
with open(
'pickle
','ab
') as f:
pickle.dump(course,f)
my_dump(python)
my_dump(linux)
my_dump(mysql)
with open(
'pickle
','rb
') as f:
while
true:
try:
content =pickle.load(f)
(content.name)
except
eoferror:
break
序列化模組
模組 乙個py檔案就是乙個模組.python開發效率之高 python的模組非常多,第三方庫.模組分類 1,內建模組 登入模組,時間模組,sys模組,os模組 等等.所有的擴充套件模組 3,自定義模組.自己寫的py檔案.序列化模組.序列化 創造乙個序列.例項化 創造乙個例項 物件 將乙個字典通過網路...
序列化模組
什麼叫序列化 將原本的字典 列表等內容轉換成乙個字串的過程就叫做序列化。那為什麼要序列化呢?比如,我們在python 中寫的一段 需要c上使用,那我們怎麼給?我們能想到的方法就是存在檔案裡,然後在c上再從檔案裡讀出來。但是我們都知道,對於檔案來說是沒有 不是所有的資料型別檔案都能夠識別的比如字典 列...
序列化模組
序列化模組 把某資料型別轉化成字串型別 序列化 字串型別轉化為其他資料型別 反序列化 josn模組 只有很少一部分資料型別能通過josn轉化成字串型別 字典 列表 元組 元組會轉化成列表 import json dic str dic json.dumps dic dumps字典型別轉化成字串型別 ...