Returning values from function to Python shell/IPython

castironpi at gmail.com castironpi at gmail.com
Sun Mar 9 19:51:40 EDT 2008


> >  > well after all it's a function so the only ways you can get things out
> >  > of it are:
> >  > - return a dict with all the objects
> >  > - use global (very messy)
> >  > - use a decorator to do either of the above.
>
> >  Messy, all of those... :(.
>
> >  > on the other hand have you consider using a proper test package?
> >  > instead of inspecting the objects manually from the shell you could
> >  > make it all automatic. with assert statements. you could use the std.
> >  > python testing moduleshttp://docs.python.org/lib/development.htmlor
> >  > something less verbosed like nose
>
> >  Usually, I'm using standard Python testing modules, but sometimes that is
> >  just an overkill. Sometimes I like to do 'exploratory programming',
> >  especially in the early phases of development - create a bunch of objects I
> >  want to play with and do that from IPython. Only way I found out to
> >  somewhat automate this procedure is to have a function that creates all of
> >  the test objects, and then raises an exception at the end. IPython starts
> >  ipdb, so I can work with the objects the function created (without copying
> >  them back to the shell). But this somehow looks too hack-ish for me, so I
> >  was wondering if there was an alternative...
>
> ohhh if that is the case then what you are doing seems to be the
> optimal. Just have module lvl code ran the testing in fact I don't
> even put those into the if __name__, the reason is that this is just
> temp testing that will later become real unit testing, and will never
> hit a production app. it gives you the most flexibility.

While you're at it, can you call up prior source, and edit it?  BASIC
had line numbers:

10 def f( a ):
20   return a+ 1

>>> 15 print( a )

10 def f( a ):
15 print( a )
20   return a+ 1

>>> 15   print( a )

10 def f( a ):
15   print( a )
20   return a+ 1

'''Interactives could some day have this too:'''

>>> edit f
Object f opened in editor
>>> close
Object f written back.  Elapsed time 5 minutes.
>>>



More information about the Python-list mailing list