3 ms·
Sure, but, just spitballing here, could a substantial fraction of imported code benefit even with a very conservative heuristic? In any case, given your points
by smitherfield 9y ago
Sure, but, just spitballing here, could a substantial fraction of imported code benefit even with a very conservative heuristic?
In any case, given your points, it seems like a future Python version ought to introduce a new version of the import statement with lazy semantics (which, besides eliminating dead code, is also IMO the more correct/explicit behavior when importing symbols).
- deckiedan 9y agoThat's kind of what I was hoping. I suspect a vast proportion of normal Python code doesn't use the meta programming and run on import and so on.
- joshuamorton 9y agoIf a module imports anything, it cannot be assumed clean, since any of its imports may execute code, and they will not be available at compile time.
- marmaduke 9y agoIt'd be pretty easy to do the experiment, since you can override the import logic and do lazy imports, eg. class LazyModule: def __init__(self, name): self.name = name def __getattr__(self, key): mod = {} exec('import %s as mod', mod) self.mod = mod['mod'] return getattr(self.mod, key) class LazyImporter: def get_module(self, name): return LazyModule(name)