如何在空闲状态下重新加载Python模块?
我试图了解我的工作流如何与Python和IDLE一起工作 假设我写了一个函数:如何在空闲状态下重新加载Python模块?,python,module,reload,python-idle,Python,Module,Reload,Python Idle,我试图了解我的工作流如何与Python和IDLE一起工作 假设我写了一个函数: def hello(): print 'hello!' >>> from greetings import * >>> hello() hello! 我将文件保存为greetings.py。然后在空闲状态下,我测试功能: def hello(): print 'hello!' >>> from greetings import * >&
def hello():
print 'hello!'
>>> from greetings import *
>>> hello()
hello!
我将文件保存为greetings.py
。然后在空闲状态下,我测试功能:
def hello():
print 'hello!'
>>> from greetings import *
>>> hello()
hello!
然后我修改了程序,想再次尝试hello()
。所以我重新加载:
>>> reload(greetings)
<module 'greetings' from '/path/to/file/greetings.py'>
重新加载(问候语)
然而,这一变化并未得到重视。我做错了什么?如何重新加载修改过的模块
我已经阅读了许多与此相关的问题,但没有一个答案对我有帮助。IDLE有一个菜单选择来运行当前文件。这将通过首先运行文件并重新加载来重新启动shell。您需要重做此行: 来自问候语导入的
>>*
等你做完了
>>重新加载(问候语)
重新加载模块不起作用的原因是*实际上导入了模块内的所有内容,因此您必须单独重新加载这些内容。如果您执行了以下操作,它的行为将与您预期的一样:
>>> import greetings
>>> greetings.hello()
hello!
更改文件
重新加载(问候语)
>>>你好
世界!
以下是我在尝试您的示例时得到的信息(来自一个全新的Python交互式会话):
在windows上,我使用shell->Restart shell或CTRL+F6快捷方式重新启动并加载最新版本的modue我认为在他的示例中,他忽略了一个事实,即他同时导入了问候语和来自问候语导入*,因此上面的示例对他来说很有用。在这种情况下,仅重新加载问候语不会导致对hello()的调用被更新,即使对hello.hello()的调用可以正常工作。@Jacinda您可能是对的,我已经尝试了很多事情,并试图提取出重要的行为。@FarmBoy这是我以前遇到的一个错误。当我意识到发生了什么后,我总是会有一种“哦,糟了”的感觉。
ctrl+f6
也会重新启动您的会话。或者您可以在文件编辑器中按f5(空闲)或只使用ctrl-f6。更容易
>>> import greetings
>>> greetings.hello()
hello
>>> reload(greetings)
<module 'greetings' from 'greetings.pyc'>
>>> greetings.hello()
hello world