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.

I found by actually typing a function name, the R gives you a code body

output.

> f1 = function(x){x*x}

> f1
function(x){x*x}

# more examples (you can try some)

> sd
function (x, na.rm = FALSE)

{

if (is.matrix(x))

apply(x, 2, sd, na.rm = na.rm)

else if (is.vector(x))

sqrt(var(x, na.rm = na.rm))

else if (is.data.frame(x))

sapply(x, sd, na.rm = na.rm)

else sqrt(var(as.vector(x), na.rm = na.rm))

}

<environment: namespace:stats>

# ------------------------------------------------

While our python gives an output which is more pro but less

informational.

>>> def f1(x):return x*x

>>> f1
<function f1 at 0x00F522B0>

What I would like to do is to write a function like disp(), when typed,

it can give you the code infomation.

>>> disp(f1)
<function f1 at 0x00F522B0>

def f1(x):

return x*x

<environment: interactive>

# 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 ...

Haibao Tang