20、序列化模塊和模塊
1、什麽是序列化?
就是轉向一個字符串的數據類型
2、為什麽序列化?
1、數據存儲(將對象從一個地方傳遞到另一個地方。)
2、網絡上傳輸的時侯
3、以某種存儲形式使自定義對象持久化
3、序列化:從數據類型轉向字符串的過程
反序列化:從字符串轉向數據的過程
二、jason模塊提供的四個功能:domp、load、domps、loads
dumps和loads
import json dic = {‘k1‘:‘v1‘,‘k2‘:‘v2‘,‘k3‘:‘v3‘} str_dic = json.dumps(dic) #序列化:將一個字典轉換成一個字符串 print(type(str_dic),str_dic) #<class ‘str‘> {"k3": "v3", "k1": "v1", "k2": "v2"} #註意,json轉換完的字符串類型的字典中的字符串是由""表示的 dic2 = json.loads(str_dic) #反序列化:將一個字符串格式的字典轉換成一個字典 #註意,要用json的loads功能處理的字符串類型的字典中的字符串必須由""表示 print(type(dic2),dic2) #<class ‘dict‘> {‘k1‘: ‘v1‘, ‘k2‘: ‘v2‘, ‘k3‘: ‘v3‘} list_dic = [1,[‘a‘,‘b‘,‘c‘],3,{‘k1‘:‘v1‘,‘k2‘:‘v2‘}] str_dic = json.dumps(list_dic) #也可以處理嵌套的數據類型 print(type(str_dic),str_dic) #<class ‘str‘> [1, ["a", "b", "c"], 3, {"k1": "v1", "k2": "v2"}] list_dic2 = json.loads(str_dic) print(type(list_dic2),list_dic2) #<class ‘list‘> [1, [‘a‘, ‘b‘, ‘c‘], 3, {‘k1‘: ‘v1‘, ‘k2‘: ‘v2‘}] loads和dumps
load和dump
import json f = open(‘json_file‘,‘w‘) dic = {‘k1‘:‘v1‘,‘k2‘:‘v2‘,‘k3‘:‘v3‘} json.dump(dic,f) #dump方法接收一個文件句柄,直接將字典轉換成json字符串寫入文件 f.close() f = open(‘json_file‘) dic2 = json.load(f) #load方法接收一個文件句柄,直接將文件中的json字符串轉換成數據結構返回 f.close() print(type(dic2),dic2) load和dump
2、pickle模塊
1、所有的python中的數據類型都可以轉化成字符串形式
2、pickle序列化的內容只有python能理解
3、且部分反序列化依賴python代碼
3、shelve
序列化句柄
使用句柄直接操作,非常方便
模塊
1、模塊調用的順序:
·所有的模塊導入都應該盡量往上寫,順序為:內置模塊、擴展模塊、自定義模塊
2、模塊導入的規範:
import
1、import 模塊名
(調用的時候:模塊名.變量名, 和本文件中的變量名完全不沖突)
2、 import 模塊名 as 重命名的模塊名 : 提高代碼的兼容性
3、 import 模塊1,模塊2(調用多個模塊)
from import
1、from 模塊名 import 變量名
直接使用 變量名 就可以完成操作,如果本文件中有相同的變量名會發生沖突
2、from 模塊名 import 變量名字 as 重命名變量名
3、 from 模塊名 import 變量名1,變量名2
4、 from 模塊名 import * (將模塊中的所有變量名都放到內存中,如果本文件中有相同的變量名會發生沖突)
5、from 模塊名 import * 和 __all__ 是一對 (沒有這個變量,就會導入所有的名字,如果有all 只導入all列表中的名字)
3、模塊執行的順序
1、先從sys.modules裏查看是否已經被導入(所以模塊不會重復被導入)
2、如果沒有導入,就依據sys.path路徑去尋找模塊(sys.path導入模塊)
3、就到了就導入模塊
4、創建這個模塊的命名空間
5、執行文件,把文件中的名字都放入命名空間裏
4、在python中自定義的模塊中,有的時候對於這個模塊的修改需要執行一個自己單獨的結果(比如打印一個只在本模塊(文件)顯示的內容),而在調用的模塊就不顯示這個單獨
的內容,所以這裏有一個需要說明的內容:(寫到這裏有些奔潰,好像沒有人看這個,這些都是我自己寫的話)
__name__(亮相了!!!!!!!)
在模塊中 有一個變量__name__, 當我們直接執行這個模塊的時候,__name__ == ‘__main__‘ 當我們執行其他模塊,在其他模塊中引用這個模塊的時候,這個模塊中的__name__ == ‘模塊的名字‘
http://www.cnblogs.com/Eva-J/articles/7228075.html#_label9
20、序列化模塊和模塊