序列化:把对象从内存中变成可存储和传输的过程,反之为反序列化。
不同编程语言间传递对象的标准格式json(还有xml),不过在python中json只能序列化简单的对象,复杂的一般用pickle(有可能不能反序列化)
对于json来说,字典序列化的时候最好都使用双引号。重要的方法:dumps()和dump()->序列化,loads()和load()->反序列化,
dump把python对象转换成json对象生成一个fp的文件流,而dumps则是生成了一个字符串,load和loads一样。
import json,pickle
dict1={"name":"abc","score":77}
with open(‘test.txt‘,‘w‘) as f:
f.write(json.dumps(dict1))#pickle一样 这里是写入
json.dump(dict1,f)#pickle一样 这里是写入
json.loads(f.read()),json.load(f) 这里是读取
模块:本质是一个.py文件,为了实现一些功能(变量,函数,类),文件名:test.py 模块名:test
包:本质是一个目录或文件夹,其下必须有个__init__.py文件(放一些模块)
引入:
import x,y,z as m 引用多个模块, as 取别名
import test 把test.py文件的代码解释一遍赋给test(调用其中变量:test.变量名,调用函数:test.函数名()),跟from test import * 一样(把其中代码粘贴过来,不建议如此用,防止变量函数会重复)
from test import x(test下的变量或方法,若防止重复名可取别名 as)
导入包本质就是去执行其下的__init__.py文件。
有时候import 模块时不在同一目录下或其下:
imporyt os,sys
__file__当前程序的相对路径
os.path.abspath(__file__)当前程序的绝对路径
os.path.dirname(__file__) 去掉最后一个路径
sys.path.append(url),设置环境变量。