Is this possible in Python?

Caleb Hattingh a at b.c
Mon Mar 13 19:35:53 CET 2006


I don't think this is what you want (a string representation of the 
argument passed to a function as that argument is at runtime is way 
beyond my abilities), but this can retrieve the literal text in the 
function call as it appears in the .py file, assuming you have the .py 
file available and not just the .pyc:

### Call this file ""
def fun(i):


def test():
     fname = ''
     testfunname = 'f'
     flines = open(fname,'r').readlines()
     for i in flines:
         if i.find(testfunname)>-1 and i.find('def '+testfunname)==-1:
             s = i
     leftbracketposition = s.find('(')
     rightbracketposition = s.find(')')
     arg = s[leftbracketposition+1:rightbracketposition]
     return arg

print test()
### Output:
# 8+7

alainpoint at wrote:
> Hi
> I wonder if Python is capable of the following: define a function which
> returns its argument.
> I mean:
> def magic_function(arg):
>         ...... some magic code ...
> that behaves the following way:
> assert magic_function(3+4)=="3+4"
> assert magic_function([i for i in range(10)])=="i for i in range(10)]"
> It is not trivial at all and might require some bytecode hacking that i
> am unable to do myself BUT you are the experts ;-)
> Alain

More information about the Python-list mailing list