Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 为什么你不应该重新加载模块?_Python_Python 3.x_Module_Reload - Fatal编程技术网

Python 为什么你不应该重新加载模块?

Python 为什么你不应该重新加载模块?,python,python-3.x,module,reload,Python,Python 3.x,Module,Reload,在第28页(另见)中,有这样一句话: 您可以强制重新加载模块,但是 我从来没想过要这么做 有人能解释一下为什么我们不应该在Python中重新加载模块吗?重新加载模块通常是您在开发过程中会做的事情,因此您可以继续运行相同的解释器会话,但可以在其中获得您对模块所做的更改。这实际上是在视频中解释的,有一个例子,来自 然而,如果您发现自己编写的实际功能依赖于运行时模块的更改和重新加载,那么您应该确保您知道自己在做什么,并且首先考虑了其他选项 此处详细说明了重新加载: tl;rd 对于重新加载,有一些有效

在第28页(另见)中,有这样一句话:

您可以强制重新加载模块,但是 我从来没想过要这么做


有人能解释一下为什么我们不应该在Python中重新加载模块吗?

重新加载模块通常是您在开发过程中会做的事情,因此您可以继续运行相同的解释器会话,但可以在其中获得您对模块所做的更改。这实际上是在视频中解释的,有一个例子,来自


然而,如果您发现自己编写的实际功能依赖于运行时模块的更改和重新加载,那么您应该确保您知道自己在做什么,并且首先考虑了其他选项

此处详细说明了重新加载:

tl;rd

对于
重新加载
,有一些有效的用例,比如Django development server。但总的来说,重新加载模块有太多的注意事项,不实用

两个最大的问题是:

  • 要完全卸载旧对象,必须确保没有其他模块或对象保留对它们的引用(这通常是不可能的)。如果在这里失败,可能会出现难以跟踪的内存泄漏或意外行为

  • 没有通用的方法用C扩展重新加载模块。有些可以安全地重新装载;有些似乎可以安全地重新加载,但会泄漏,有些可能会使您的解释器崩溃或产生奇怪的错误


  • 重新加载模块?你的意思是导入一个模块两次吗?规则一:如果有可能并且你需要它,三思而后行。唯一的例外可能是为核弹编写软件。然后三思。