[Python-Dev] towards a faster Python (original) (raw)
Brett C. drifty@alum.berkeley.edu
Mon, 09 Jun 2003 12:51:44 -0700
- Previous message: [Python-Dev] towards a faster Python
- Next message: [Python-Dev] towards a faster Python
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Neil Schemenauer wrote:
Hi guys,
With Guido's blessing, I just commited a change that takes a small step towards where we want to be, IMO. Using setattr on a module to create a global name that shadows a builtin name now raises a DeprecationWarning. E.g. import fileinput fileinput.open = 10 # <- warning will be raised The goal is that the compiler should be able to determine the scope of a name at compile time. Code like the above does not allow that and so non-local names must be searched for in both globals and builtins at run time.
Spiffy.
Unfortunately the warning is not bulletproof. It's possible to modify the module dict directly and bypass the warning. I'm not sure what to do about that. :-(
Probably only way to deal with that would to come up with namespace dicts that can restrictions set on them?
Eventually we might want to allow optimizations based on known builtin functions. For example, code like
for i in range(100000): ... could be rewritten to use an integer counter rather than creating a list and then iterating over it. I'm not sure how much resistance there would be in the community to disallowing reassignment of builtin names though. I don't think I've ever reassigned a builtin name so I think it would be worth it.
I am personally fine with this since I too never assign to built-in names, but I can see people raising a stink over this citing that their freedoms are being encroached upon. =)
The compiler could also warn about references to non-existent names. That's a common error and would be helpful to developers.
Isn't this getting into PyChecker's territory?
-Brett
- Previous message: [Python-Dev] towards a faster Python
- Next message: [Python-Dev] towards a faster Python
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]