【问题标题】:Python call function from another file each time the function is called [duplicate]每次调用函数时,Python都会从另一个文件调用函数[重复]
【发布时间】:2015-12-17 02:05:14
【问题描述】:
我已阅读这篇文章How to call a function from another file in Python,了解如何从另一个文件加载函数。我有全天运行的生产代码,我希望能够只更改该代码中的一个函数来测试/更改输出。我不想每次需要验证我的更改是否成功时都重新启动程序。
是否有一种机制可以在每次调用函数时加载函数,而不是在程序开始时导入函数并在该特定实例的整个生命周期中使用相同的代码?我将程序开头的import 语句移动到一个循环中,无论我对随附文件中的函数进行多少更改,都会观察到相同的输出。
类似的类比是 HTML 和 CSS 样式。我可以在那里有单独的文件并更改 CSS 以更改 HTML 的输出,而无需实际接触 HTML。
【问题讨论】:
标签:
python
function
python-2.7
python-import
【解决方案1】:
确实有一种方法可以使对外部模块所做的更改反映在程序/python 会话中,而无需重新启动程序。我们可以使用reload() 方法(或importlib.reload() 用于Python 3.x,如果有人感兴趣的话)。示例 -
...
import <module>
reload(<module>)
但请注意,您需要在想要重新加载模块时执行此操作。
我会说如果 python 程序在特定的 iterval 中不断重复,那么长时间运行它不是一个好的设计。让 cron 作业或外部调度程序在需要时运行 python 程序会是一个更好的设计。如果重新启动完整的 python 程序,则不需要重新加载模块,因为 Python 总是会在每次运行时重新加载模块。
【解决方案2】:
如果您使用的是 Python 3,则可以使用 importlib.reload 函数。对于 Python 2,请仅使用 reload。
import MyModuleWithAFunction
import importlib
...
importlib.reload(MyModuleWithAFunction)
阅读更多here。