How is this so? Decorators are just syntactic sugar for defining a function then replacing it with the result of calling another function (the decorator) on it.
so can normal (i.e. not using decorators) code after the the function, e.g.:
def myFunction(x):
blah
doSomethingWith(myFunction)
Here, doSomethingWith() can introspect on myFunction()