Of course, normally you just pass the variables you are interested the called function to access as parameters.
But it raises an interesting development paradigm if every non-local variable is looked up on the scope of each calling function. Some languages, like Postscript, work this way.
In Python it can be achieved simply by copying the local variables in the code-frame of the caller functions to the global scope of the called one:
This decorator, while solid enough for "production" won't work for variables in functions defined within other functions that use variable names that exist on the outher functions. Those would still be bound to the defining closure, as Free Variables. It can be made to work with those, but it would be another beast.