IPython ships with a basic system for running scripts interactively in sections, useful when presenting code to audiences. A few tags embedded in comments (so that the script remains valid Python code) divide a file into separate blocks, and the demo can be run one block at a time, with IPython printing (with syntax highlighting) the block before executing it, and returning to the interactive prompt after each block. The interactive namespace is updated after each block is run with the contents of the demo's namespace.
This allows you to show a piece of code, run it and then execute interactively commands based on the variables just created. Once you want to continue, you simply execute the next block of the demo. The following listing shows the markup necessary for dividing a script into sections for execution as a demo.
"""A simple interactive demo to illustrate the use of IPython's Demo class. Any python script can be run as a demo, but that does little more than showing it on-screen, syntax-highlighted in one shot. If you add a little simple markup, you can stop at specified intervals and return to the ipython prompt, resuming execution later. """ print 'Hello, welcome to an interactive IPython demo.' print 'Executing this block should require confirmation before proceeding,' print 'unless auto_all has been set to true in the demo object' # The mark below defines a block boundary, which is a point where IPython will # stop execution and return to the interactive prompt. # Note that in actual interactive execution, # <demo> --- stop --- x = 1 y = 2 # <demo> --- stop --- # the mark below makes this block as silent # <demo> silent print 'This is a silent block, which gets executed but not printed.' # <demo> --- stop --- # <demo> auto print 'This is an automatic block.' print 'It is executed without asking for confirmation, but printed.' z = x+y print 'z=',x # <demo> --- stop --- # This is just another normal block. print 'z is now:', z print 'bye!'
In order to run a file as a demo, you must first make a Demo object out of it. If the file is named myscript.py, the following code will make a demo:
mydemo = Demo('myscript.py')
demo?
Fernando Perez 2006-06-06