断言Assert
assert n!=0,'n is zero!'
断言的意思是当n!=0为true时,继续执行,否则,后面的代码会出错。抛出AssertionError:n is zero。
启动python解释器时可以使用-0来关闭断言。关闭后所有断言被看做pass。
虽然用IDE调试起来比较方便,但是最后你会发现,logging才是终极武器。
IO编程
文件读取必须调用f.close(),每次都调用太麻烦,使用如下代码读取文件,会在读取完毕后自动关闭:
with open('/path/to/file','r') as f:
print f.read()
file-like Object
像open()函数返回的这种有个read()方法的对象,统称为file-like Object,除了file外,还可以是内存的字节流,网络流,自定义流等。
序列化
我们把变量从内存中变成可存储或传输的过程称之为序列化,在Python中叫pickling,在其他语言中也被称之为serialization,marshalling,flattening等等,都是一个意思。
反过来,把变量内容从序列化的对象重新读到内存里称之为反序列化,即unpickling。
对象序列化与反序列化
python语言的序列化模块是pickle,一般使用json模块。
json.dumps(s,default=student2dict))#序列化
json.loads(json_str,object_hook=dict2student))#反序列化