假设我使用copy_reg.pickle
注册reduce函数,如下所示。
import copy_reg, copy, pickle
some_global_variable = 10
class C(object):
def __init__(self, a):
self.a = a
self.b = some_global_variable
def unpickle_c(a):
c = C(a)
c.b = some_global_variable
def pickle_c(c):
return unpickle_c, (c.a,)
copy_reg.pickle(C, pickle_c)
我有几个问题:
函数unpickle_c
是否保存为序列化对象并在unpickling时调用?如果这是真的,是否意味着我无法访问函数之外的状态,例如some_global_variable
函数中的unpickle_c
?或者全局变量是否也将保存为序列化函数对象的一部分?
如果上述情况不属实,unpickle_c
是否保存为某个标识符,并且只需定位该函数并在unpickling时调用该函数?如果这是真的,这是否意味着,如果包含unpickle_c
的模块在unpickling时尚未导入,它将被导入?