Can a function access its own name?

B Mahoney mrbmahoney at gmail.com
Sat Nov 19 22:40:28 EST 2005


Decorate any function with @aboutme(), which
will print the function name each time the function is called.

All the 'hello' stuff is in the aboutme() decorator code.
There is no code in the decorated functions themselves
doing anything to telling us the function name.


# The decorator
def aboutme():

    def thecall(f, *args, **kwargs):
        # Gets to here during module load of each decorated function

        def wrapper( *args, **kwargs):
        # Our closure, executed when the decorated function is called
            print "Hello\nthe name of this function is '%s'\n" \
                % f.func_name
            return f(*args, **kwargs)

        return wrapper

    return thecall

@aboutme()
def testing(s):
    print "string '%s' is argument for function" % s


@aboutme()
def truing():
    return True

# Try these 
testing('x')

testing('again')

truing()




More information about the Python-list mailing list