来自第三方模块的覆盖/修补功能



我正在寻找覆盖/修补从第三方模块导入的函数的最佳实践方法。 例如,在我的代码中,我正在导入并使用如下函数:

from somemodule import some_function
foo = 3
bar = 5
some_function(foo, bar)

我现在想用我自己的函数覆盖some_function。我是我自己的函数,我想做一些魔术,然后调用原始函数。

现在,我是这样做的:

from somemodule import some_function as some_function_original
def some_function(f, b):
    # do some magic
    return some_function_original(f, b)
foo = 3
bar = 5
some_function(foo, bar)

但是,我想避免"从[..]将 [..] 导入为 [..]" 并保留原始函数名称并对其进行覆盖/修补?

考虑只导入模块的命名空间而不是确切的函数?

import somemodule
def some_function(f, b):
    # do some magic
    return somemodule.some_function(f, b)
foo = 3
bar = 5
some_function(foo, bar)

最新更新