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 ')
假设我从 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 ')