python - 如何在 Python 中对函数进行深层复制?

标签 python function copy deep-copy

我想用 Python 深度复制一个函数。根据 documentation复制 模块没有帮助。 ,它说:

This module does not copy types like module, method, stack trace, stack frame, file, socket, window, array, or any similar types. It does “copy” functions and classes (shallow and deeply), by returning the original object unchanged; this is compatible with the way these are treated by the pickle module.

我的目标是让两个函数具有相同的实现但具有不同的文档字符串。

def A():
    """A"""
    pass

B = make_a_deepcopy_of(A)
B.__doc__ = """B"""

那么如何做到这一点呢?

最佳答案

FunctionType 构造函数用于制作函数的深拷贝。

import types
def copy_func(f, name=None):
    return types.FunctionType(f.func_code, f.func_globals, name or f.func_name,
        f.func_defaults, f.func_closure)

def A():
    """A"""
    pass
B = copy_func(A, "B")
B.__doc__ = """B"""

关于python - 如何在 Python 中对函数进行深层复制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39353158/

相关文章:

C++ 错误没有匹配的调用函数

python - 在 python 中使用 native 文件管理器复制文件

python - pandas,python - 如何在时间序列中选择特定时间

python - 如何逐行循环遍历两个文件?

C 程序将文件 io 传递给函数

javascript - 具有适当参数的函数

python - ImageGrab.grab() 方法太慢

python - 在 Python 中计算十六进制的 MD5

C中的字符一一复制就是复制整个字符串

hadoop - 如何从HDFS拷贝文件到本地文件系统