我是一名新手Python程序员,正在尝试使用Pickle,但不理解它的工作原理。
我定义了一个defaultdict,并将其写入Pickle。然后在另一个脚本中读取它,即使没有导入collections模块,它仍然像defaultdict一样运行。
脚本1:
import pickle
from collections import defaultdict
x = defaultdict(list)
x['a'].append(1)
print(x)
with open('pick','wb') as f:
pickle.dump( x, f )
脚本2:
import pickle
with open('pick','rb') as f:
x = pickle.load( f )
x['b'].append(2)
print(x)
y = dict()
try:
y['b'].append(2)
print(y)
except KeyError:
print("Can't append to y")
运行中:
$ python3 pick2.py
defaultdict(<class 'list'>, {'a': [1], 'b': [2]})
Can't append to y
所以,第二个脚本没有导入defaultdict,但pickled x仍然像一个defaultdict一样运行。我很困惑:)
这在Python中是如何工作的?谢谢任何信息:)