对象的序列化
序列化是将对象的状态信息转换为可以存储或传输的形式的过程。在序列化期间,对象将其当前状态写入到临时或持久性存储区。以后,可以通过从存储区中读取或反序列化对象的状态,重新创建该对象。
在Python中,这种序列化过程称为pickle,可以将对象pickle成字符串、磁盘上的文件或者任何类似于文件的对象,也可以将这些字符串、文件或类似于文件的对象unpickle成原来的对象。
通过pickle模块实现基本的数据序列和反序列化。
将对象序列化成字符串
import pickle
lista = ['C++','C','Java','Python']
listb = pickle.dumps(lista)
#将字符串反序列化成对象
listc = pickle.loads(listb)
将对象序列化到文件
pickle.dump(被序列化的对象,文件对象)
文件对象 = open(文件名,访问模式,buffering)
#将对象序列化到文件
output =open('data.pkl','wb')
pickle.dump(lista,output)
output.close()
#从文件data.pkl反序列化
f =open('data.pkl','rb')
list = pickle.load(f)
print(list)
f.close()
使用pickle.load()方法可以将使用pickle.dump()方法得到的文件反序列化成原来的对象
Python序列解包:
就是将序列中存储的值指派给各个变量(被解包的序列里的元素数量必须与左侧的变量数量相同,否则会报异常)
链式赋值:
可以一次性将一个值指派给多个变量
异常处理语句:
使用异常处理语句可以捕获到异常情况,并进行处理,从而避免程序异常退出。
#异常处理语句
try:
i =10
print(30/(i-10))
except Exception as e:
print(e)
finally:
print("执行完成")
函数
当使用列表或字典作为函数参数时,在函数内部对列表或字典的元素所进行的操作会影响调用函数的实参
函数参数可以设置默认值,并且有默认值的参数只能出现在没有默认值的参数后面。
可变长参数:
当参数以*开头时,表示可变长参数将被视为一个元组
#可变长参数
def func1(*t):
print("可变长参数数量如下:")
print(len(t))
print("依次为:")
for iin range(len(t)):
print(t[i])
func1(1,2,3,4)
调用函数直接使用函数名来调用
Python实行按值传递参数。值传递指调用函数时将常量或变量的值(通常称为实参)传递给函数的参数(通常称为形参)
注意:当使用列表或字典作为函数参数时,在函数内部对列表或字典的元素进行的操作会影响调用函数的实参。
参数的默认值
python中可以为函数的参数设置默认值。可以在定义函数时,直接在参数后面使用"="为其设置默认值。在调用函数时,可以不指定拥有默认值的参数的值,此时在函数体中以默认值作为该参数。
注意:有默认值的参数只能出现在没有默认值的参数的后面。
Python还支持可变长度的参数列表。可变长参数可以是元组或字典。当参数以*开头时,表示可变长参数将被视为一个元组。
在调用函数时,也可以不指定可变长参数,此时可变长参数是一个没有元素的元组字典
当参数以**开头时,表示可变长参数将被视为一个字典