在这种情况下,“重装”会做什么?

时间:2016-12-29 17:59:27

标签: python python-2.7

import utils; reload(utils)

from utils import *

为什么需要加载两次? 'reload'不是内置函数。正确?

2 个答案:

答案 0 :(得分:2)

最好的方法是查看reload document,其中包含:

  
      
  1. 重新编译Python模块的代码并重新执行模块级代码,定义一组新的对象,这些对象绑定到模块字典中的名称。第二次不调用扩展模块的init函数。

  2.   
  3. 与Python中的所有其他对象一样,旧对象仅在其引用计数降至零后才会被回收

  4.   
  5. 模块命名空间中的名称已更新以指向任何新的或更改的对象。

  6.   
  7. 其他对旧对象的引用(例如模块外部的名称)不会反弹以引用新对象,必须在每个名称空间发生更新如果需要

  8.   

答案 1 :(得分:1)

  

在这种情况下“重装”会做什么?

这取决于utils的作用...例如,如果导入utils有副作用,那么该效果将再次发生。

另请注意,在任何生产代码中使用reload绝对是您想要避免的。 reload存在的主要原因是交互式使用......

  • 加载模块
  • 测试并查看错误
  • 编辑模块
  • 重新加载模块
  • 测试出来
  • ...