每次调用函数时,Python调用另一个文件的函数

Python call function from another file each time the function is called

本问题已经有最佳答案,请猛点这里访问。

我读过这篇文章,如何从Python中的另一个文件调用函数,以了解如何从另一个文件加载函数。我有一整天都在运行的生产代码,我希望能够只更改该代码中的一个函数来测试/更改输出。我不想每次需要验证更改是否成功时都重新启动程序。

是否有一种机制可以在每次调用函数时加载它,而不是在程序开始时导入函数,并在特定实例的整个生命周期中使用相同的代码?我把import语句从程序的开头移到了一个循环中,不管我对附带文件中的函数做了多大的更改,都会观察到相同的输出。

类似的类比是HTML和CSS样式。我可以在那里有单独的文件,并更改CSS来更改HTML的输出,而不必实际接触HTML。


确实有一种方法可以使对外部模块所做的更改反映在程序/python会话中,而无需重新启动程序。我们可以使用reload()方法(如果有人感兴趣的话,也可以将importlib.reload()用于python 3.x)。示例-

1
2
3
...
import <module>
reload(<module>)

但是请注意,每当您想要重新加载模块时都需要这样做。

我会说,如果一个Python程序在特定的iterval中不断地重复运行,那么长时间运行它将不是一个好的设计。如果需要的话,让cron作业或外部调度程序运行python程序会是更好的设计。如果重新启动整个python程序,则不需要重新加载模块,因为每次运行时python都会再次加载模块。


如果您使用的是python 3,那么可以使用importlib.reload函数。对于python 2,只使用reload

1
2
3
4
import MyModuleWithAFunction
import importlib
...
importlib.reload(MyModuleWithAFunction)

阅读更多信息。