在文件中, 字符串可以很方便的读取写入. 数字可能稍微麻烦一些, 因为read()方法只返回字符串, 我们还需要将其传给int()这样的函数, 使其将如'123'的字符串转为数字 123. 但是, 如果要保存更复杂的数据类型, 如列表, 字典, 或者类的实例, 那么就会更复杂了.
为了让用户在时常的编程和测试时保存复杂的数据类型, Python 提供了标准模块, 称为pickle. 这个模块可以将几乎任何的 Python 对象 (甚至是 Python 的代码), 转换为字符串表示; 这个过程称为pickling. 而要从里面重新构造回原来的对象, 则称为unpickling. 在 pickling 和 unpickling 之间, 表示这些对象的字符串表示, 可以存于一个文件, 也可以通过网络在远程机器间传输.
如果你有一个对象x, 和一个已经打开并用于写的文件对象f, pickle 这个对象最简单的方式就是使用:
pickle.dump(x,f)
有了 pickle 这个对象, 就能对f以读取的形式打开:
x=pickle.load(f)
(还有其他不同的形式, 比如 pickling 很多对象, 或者不想保存至文件; 更多的信息参考pickle模块.)
pickle是 Python 中保存及重用对象的标准方式; 标准的属于称为persistent对象 (即持久化对象). 因为pickle被广泛使用, 很多写 Python 扩展的作者都会确保, 如矩阵这样的数据类型能被合理的 pickle 和 unpickle.
=============================================================================
Python 中只有模块(module),类(class)以及函数(def、lambda)才会引入新的作用域,其它的代码块(如 if/elif/else/、try/except、for/while等)是不会引入新的作用域的,也就是说这这些语句内定义的变量,外部也可以访问