'''info = {
'name':'cay',
'age' : 23,
}
f = open('1.txt','w')
f.write(str(info))
f.close()
#可以存进去,但是怎么恢复为字典呢?
#序列化:把字典等转为字符串
'''
'''#反序列化,字符串转为字典,忘了eval吧。。。他不通用
f = open('1.txt','r')
data = eval(f.read())
f.close()
print(data['age'])
'''
'''#json序列化
import json
info = {
'name':'cay',
'age' : 23,
}
f = open('1.txt','w')
f.write(json.dumps(info))
#反序列化
import json
f = open('1.txt','r')
data = json.loads(f.read())
print(data['age'])
'''
'''
#试试json能否将函数序列化,json可以跨语言使用
import json
def func(name):
print('hello',name)
info = {
'name':'cay',
'age' : 23,
'hs' : func
}
f = open('1.txt','w')
f.write(json.dumps(info))
f.close()
#报错:函数不可序列化TypeError: Object of type function is not JSON serializable
#json只支持最简单的
#xml这种标记式的语言正在逐渐被json所取代
'''
'''#pickle进行序列化
import pickle
def func(name):
print('hello', name)
info = {
'name': 'cay',
'age': 23,
'hs': func
}
#f = open('1.txt', 'w')
#f.write(pickle.dumps(info))#这行会报错,默认变成了二进制,打印一下
#print(pickle.dumps(info))
#果然是个二进制b'\x80\x03}q\x00(X\x04\x00\x00\x00nameq\x01X\x03\x00\x00\x00cayq\x02X\x03\x00\x00\x00ageq\x03K\x17X\x02\x00\x00\x00hsq\x04c__main__\nfunc\nq\x05u.'
#所以要用wb打开文件
f = open('1.txt','wb')
f.write(pickle.dumps(info))
f.close()
#1.txt里变成了下面的二进制格式,怪怪的。。。。
�}q (X nameqX cayqX ageqKX hsqc__main__
func
qu.
'''
import pickle
def func(name):
print('hello2', name)
f = open('1.txt','rb')
data = pickle.loads(f.read())
print(data['hs']('cay'))
f.close()
'''def func(name):
print('hello', name)
#把函数拷贝过来
'''
'''#另外的方法
f.write(json.dumps(info))等同于
json.dump(info)
json.loads(f.read())等同于
json.load(f)
f.write(pickle.dumps(info))等同于
pickle.dump(info)
pickle.loads(f.read())等同于
pickle.load(f)
'''