gpt4 book ai didi

python - copy_reg如何保存reduce/rebuild函数

转载 作者:太空宇宙 更新时间:2023-11-03 17:28:27 24 4
gpt4 key购买 nike

假设我使用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)

我有几个问题:

  1. 函数 unpickle_c 是否保存为序列化对象并在 unpickling 时调用?如果这是真的,是否意味着我无法访问函数外部的状态,例如 unpickle_c 函数中的 some_global_variable ?或者全局变量也会被保存为序列化函数对象的一部分吗?

  2. 如果上述情况不成立,则 unpickle_c 是否保存为某个标识符,并且该函数只是在 unpickle 时定位并调用?如果这是真的,这是否意味着,如果包含 unpickle_c 的模块在 unpickle 时尚未导入,那么它将被导入?

最佳答案

我刚刚通过亲自试验pickle模块得到了答案。基本上子弹2是正确的。通过检查 pickle 的字符串,模块名称和重建函数的名称被保存。该模块将在 unpickle 时导入,然后调用该模块中的函数。

关于python - copy_reg如何保存reduce/rebuild函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32238574/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com