假设我使用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
是否保存为序列化对象并在取消勾选时调用?如果这是真的,是否意味着我不能访问函数之外的状态,比如unpickle_c
函数中的some_global_variable
?或者全局变量也将保存为序列化函数对象的一部分?
如果上述情况不成立,那么unpickle_c
是否保存为某个标识符,函数是否只是简单地定位并在取消勾选时调用?如果这是真的,是否意味着在取消勾选时包含unpickle_c
的模块尚未导入,它将被导入?
我刚从自己实验泡菜模块得到答案。基本上子弹2是真的。通过检查pickle字符串,将保存模块名称和重建函数的名称。在取消勾选时导入模块,然后调用该模块中的函数。你知道吗
相关问题 更多 >
编程相关推荐