Eri*_*son 12 python module reload python-idle
我试图了解我的工作流程如何与Python和IDLE一起使用.
假设我写了一个函数:
def hello():
print 'hello!'
Run Code Online (Sandbox Code Playgroud)
我把文件保存为greetings.py
.然后在IDLE中,我测试了这个函数:
>>> from greetings import *
>>> hello()
hello!
Run Code Online (Sandbox Code Playgroud)
然后我改变了程序,并想再试hello()
一次.所以我reload
:
>>> reload(greetings)
<module 'greetings' from '/path/to/file/greetings.py'>
Run Code Online (Sandbox Code Playgroud)
然而,这种变化并未得到改善.我究竟做错了什么?如何重新加载更改的模块?
我一直在阅读关于SO的一些相关问题,但没有一个答案对我有帮助.
Jac*_*nda 12
你需要重做这一行:
>>> from greetings import *
你做完之后
>>> reload(greetings)
重新加载模块的原因不起作用是因为*实际导入了模块内的所有内容,因此您必须单独重新加载它们.如果您执行了以下操作,它将按预期运行:
>>> import greetings
>>> greetings.hello()
hello!
Run Code Online (Sandbox Code Playgroud)
更改文件
>>> reload(greetings)
<module 'greetings' from 'greetings.py'>
>>> greetings.hello()
world!
Run Code Online (Sandbox Code Playgroud)
这是我在尝试你的例子时得到的结果(来自一个新的Python交互式会话):
>>> from greetings import *
>>> reload(greetings)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'greetings' is not defined
Run Code Online (Sandbox Code Playgroud)
这表明问题的根源.使用时from greetings import *
,名称greetings
不会导入全局命名空间.因此,你不能使用reload(greetings)
它.
要解决此问题,请尝试以下操作:
>>> import greetings
>>> greetings.hello()
hello
>>> reload(greetings)
<module 'greetings' from 'greetings.pyc'>
>>> greetings.hello()
hello world
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
6723 次 |
最近记录: |