L
Lonnie Princehouse
I don't know if this is a bug or a feature, but it sure is annoying.
I apologize if it's already been discussed to death elsewhere (I
couldn't find anything).
Suppose that you've a package named "foo" which contains module "bar".
Because you're careless, you've also put foo/ into your path...
Here's the problem:
False
The second import doesn't recognize that "bar" is already loaded as
foo.bar, and loads the module again. I know it's easy to avoid this
by being consistent, but wouldn't be more intuitive if import checked
a hash of loaded module filenames before importing something anew?
E.g.
True
It's probably too late to change, but it's food for thought.
(addendum: I ran into this when isinstance seemingly malfunctioned
while I was patching together lots of modules into a cohesive package;
turns out there were some instances that had been created from
package.module.class and others that were instances of module.class..
it took a while to figure out just what the problem was)
I apologize if it's already been discussed to death elsewhere (I
couldn't find anything).
Suppose that you've a package named "foo" which contains module "bar".
Because you're careless, you've also put foo/ into your path...
Here's the problem:
False
The second import doesn't recognize that "bar" is already loaded as
foo.bar, and loads the module again. I know it's easy to avoid this
by being consistent, but wouldn't be more intuitive if import checked
a hash of loaded module filenames before importing something anew?
E.g.
True
It's probably too late to change, but it's food for thought.
(addendum: I ran into this when isinstance seemingly malfunctioned
while I was patching together lots of modules into a cohesive package;
turns out there were some instances that had been created from
package.module.class and others that were instances of module.class..
it took a while to figure out just what the problem was)