Python 在外部文件中重新分配函数

Python reassign function in external file

假设我从 Python 包中导入了一个名为 main_func() 的函数,它调用了另一个定义在包的同一文件中的函数 called_func()

现在,在我的个人脚本中,我想调用 main_func()。但有一点不同,当我 运行 这个 main_func() 时,我希望它调用我个人修改的 called_func() 版本。这个函数的修改版本定义在我的个人脚本文件中。

我该怎么做?

示例:

来自包 package/functions.py

的脚本
def main_func(a):
    return called_func(a)

def called_func(a):
    print(a)

个人脚本

from package.functions import main_func

def called_func(a):
    # My personally modified function
    print(a, a)

main_func('Test ')

如果我 运行 我的脚本,我得到这个输出 Test

不过,我想得到Test Test

注意:我无法修改包文件...

您可以monkey patch您的函数进入模块

import package.functions


def called_func(a):
    # your modified function
    print(a, a)


package.functions.called_func = called_func
package.functions.main_func("Test ")

给予

Test  Test 

注意 import package.functions,然后将 called_func() 的新定义分配给模块中的定义。

import package.functions

from package.functions import main_func

def called_func(a):
    # My personally modified function
    print(a, a)

package.functions.called_func = called_func

main_func('Test ')