[Tutor] Working interactively with IDE (refreshing script; namespace updating)
Christopher Smith
csmith@blakeschool.org
Sun, 05 Aug 2001 14:49:38 -0500
After reading the "Up All Night with IDLE" thread
http://mail.python.org/pipermail/tutor/2001-January/003082.html
and seeing the post by Patrick regarding "Refreshing a script"
I came up with the following way to work with IDE:
The problem:
When you are working on a script in a window and you make
changes to an object (variable, function, etc...) name,
the old object still exists. This means that you will not
always get an "is not defined" error even though you would if
you quit and tried to run your script after restarting IDE.
Example:
ORIGINAL
x=2
print "x=",x
MODIFIED
y=1
print "y=",x ## <--forgot to change the 2nd x
# the modified program will print "y= 2" -- even
# though the x variable is undefined in the script it is
# still remembered by Python in this IDE window and
# that is what you told it (inadvertently) to print.
A solution:
Work with two scripts, one to load your active work and one
containing your developing script:
# tester.py (this just loads and reloads your work)
import mywork
reload(mywork)
mywork.testmywork()
# mywork.py (this is the one that will contain your work
def testmywork():
x=2
print "x=",x
When you make changes to "mywork.py" and *save* these changes and
then run the "tester.py" program as written, you work in "mywork"
will be reloaded and if you have a modification like shown above,
you will generate an error since x is not defined.
When your scipt runs as you want it to, copy the text of "mywork.py",
delete the first line, and unindent one level and save under a new
name.
The one-best-solution (IMO):
IDE would automatically do this sort of thing with a script that is being
run --not in the interactive window which prompts you with
the ">>>" but in the script windows that are created and used to write
new scripts.
/c