Haibao Tang wrote: > > Hail Python pals! I played with the R (http://r-project.cran.org) last > night to do some statistics and it has an interactive session too, and > I found a feature that is quite useful.
[...] > # or any shallow function code from a file >>>> import calendar; disp(calendar.isleap) > <function isleap at 0x00F795B0> > def isleap(year): > """Return 1 for leap years, 0 for non-leap years.""" > return year % 4 == 0 and (year % 100 != 0 or year % 400 == 0) > <environment: C:\Python23\Lib\calendar.py> > > # surely the compiled function code cannot be displayed >>>> disp(blabla) > <function isleap at 0x00F79B30> > : internal/compiled function > <environment: C:\Python23\DLLs\_blabla.pyd> > > Can someone please point out how this can be achieved nicely. I've > tried some text searching approach, too dirty I must say. > Oh! Thank you ... [~/tmp]> ipython Python 2.3.4 (#1, Oct 26 2004, 16:42:40) Type "copyright", "credits" or "license" for more information. IPython 0.6.7_rc1 -- An enhanced Interactive Python. ? -> Introduction to IPython's features. %magic -> Information about IPython's 'magic' % functions. help -> Python's own help system. object? -> Details about 'object'. ?object also works, ?? prints more. In [1]: import calendar In [2]: calendar.isleap?? Type: function Base Class: <type 'function'> String Form: <function isleap at 0x403bb6bc> Namespace: Interactive File: /usr/src/build/475206-i386/install/usr/lib/python2.3/calendar.py Definition: calendar.isleap(year) Source: def isleap(year): """Return 1 for leap years, 0 for non-leap years.""" return year % 4 == 0 and (year % 100 != 0 or year % 400 == 0) Note that the source display won't work for interactively defined functions, because their source is thrown away by the bytecode compiler. There are discussions of a PEP for adding a __source__ attribute to functions which would solve this limitation, but that is still in the future. Cheers, f -- http://mail.python.org/mailman/listinfo/python-list