[Python-Dev] Re: Dynamic nested scopes
Barry A. Warsaw
barry@wooz.org
Fri, 3 Nov 2000 09:16:20 -0500 (EST)
>>>>> "GvR" == Guido van Rossum <guido@python.org> writes:
GvR> The built-in names have always been part of the language
GvR> definition in my mind. The way they are implemented doesn't
GvR> reflect this, but that's just an implementation detail. How
GvR> would you like it if something claimed to be Python but
GvR> didn't support len()? Or map()?
GvR> That doesn't mean you can't add new built-ins, and I don't
GvR> think that the new implementation will prevent that -- but it
GvR> *will* assume that you don't mess with the definitions of the
GvR> existing built-ins.
GvR> Of course you still will be able to define functions whose
GvR> name overrides a built-in -- in that case the compiler can
GvR> see that you're doing that (because it knows the scope rules
GvR> and can see what you are doing). But you won't be able to
GvR> confuse someone else's module by secretly sticking a
GvR> replacement built-in into their module's __dict__.
I'm a little confused. I've occasionally done the following within an
application:
----------driver.py
# need to override built-in open() to do extra debugging
def debuggin_open(filename, mode, bufsize):
# ...
if EXTRA_DEBUGGING:
import __builtin__.__dict__['open'] = debugging_open
-------------------- snip snip --------------------
Would this be illegal? Would other modules in my application (even if
imported from the standard library!) automatically get
debugging_open() for open() like they do now?
-Barry