问题

这个问题已经有一个答案:

  • 2001年12月31日终了的两年期收入和支出及准备金和基金结余变动报表 如何卸载(重新加载)模块? 2001年12月31日终了的两年期收入和支出及准备金和基金结余变动报表 18个答复 2001年12月31日终了的两年期收入和支出及准备金和基金结余变动报表 2001年12月31日终了的两年期收入和支出及准备金和基金结余变动报表

我经常在Python解释器中测试我的模块,当我看到错误时,我快速更新.py文件.但是如何让它反映在解释器上?到目前为止,我一直在退出并重新输入解释器,因为重新导入文件不适合我.

  最佳答案

更新Python3:(引用 alreadyread-answer ,因为最后一个编辑/评论在这里建议了一个已弃用的方法)

在Python 3中,reload被移动到 imp 模块.在3.4中,imp被弃用,支持 importlib reload 被添加到后者中.当选择目标3或以后,在调用reload或导入它时引用适当的模块.

起飞:

  • python3> = 3.4:importlib.reload(packagename)
  • python3<3.4:imp.reload(packagename)
  • python2:继续下面

使用reload builtin函数:

https://docs.python.org/2/library/functions.html#reload

当执行reload(module)时:

  • Python模块代码被重新编译并重新执行模块级代码,定义了一组绑定到模块字典中名称的新对象.扩展模块的init函数不是第二次调用.
  • 与 Python 中的所有其他对象一样,旧对象只有在其引用计数降至 0 之后才能再生。
  • 模块名称空间中的名称被更新,以指向任何新的或更改的对象。
  • 对旧对象的其他引用(例如模块外部的名称)不会反弹引用新对象,如果需要,必须在每个名称空间中更新。

例:

 # Make a simple function that prints "version 1"
shell1$ echo 'def x(): print "version 1"' > mymodule.py

# Run the module
shell2$ python
>>> import mymodule
>>> mymodule.x()
version 1

# Change mymodule to print "version 2" (without exiting the python REPL)
shell2$ echo 'def x(): print "version 2"' > mymodule.py

# Back in that same python session
>>> reload(mymodule)
<module 'mymodule' from 'mymodule.pyc'>
>>> mymodule.x()
version 2
 

  相同标签的其他问题

python