如何在仅修改运行文件的情况下跨模块传递Python函数返回值?
解决方案:不修改原文件实现变量传递
核心思路:通过**猴子补丁(Monkey Patching)**修改Firstfile模块中的file_path函数,让它在无参调用时返回你在运行文件中传入的路径值,同时保留原函数传参时的功能。
修改后的运行文件代码:
import Firstfile # 传入目标路径并保存函数返回值 i = "C:\\Users\\Hp\\Desktop\\1.jpg" saved_fpath = Firstfile.file_path(i) # 定义补丁函数,兼容无参/有参调用 original_file_path = Firstfile.file_path def patched_file_path(fpath=None): if fpath is None: return saved_fpath return original_file_path(fpath) # 替换Firstfile模块中的原函数 Firstfile.file_path = patched_file_path # 导入Secondfile,此时它调用file_path()会自动获取已保存的路径 import Secondfile
说明
- 先调用原
file_path函数获取你需要的路径并保存,再定义补丁函数:无参调用时返回已保存的路径,有参调用时仍执行原函数逻辑,确保不破坏原函数的其他使用场景。 - 必须在导入Secondfile之前完成函数替换,这样
Secondfile中导入的file_path就是补丁后的版本,调用file_path()时会直接返回你指定的路径,不会触发参数缺失错误。
内容的提问来源于stack exchange,提问作者Mindtrip
相关产品推荐
相关产品推荐

