Reputation: 3945
When we import a module in a Python script, does this copy all the required code into the script, or does it just let the script know where to find it?
What happens if we don't use the module then in the code, does it get optimized out somehow, like in C/C++?
Upvotes: 3
Views: 1593
Reputation: 280181
None of those things are the case.
An import does two things. First, if the requested module has not previously been loaded, the import loads the module. This mostly boils down to creating a new global scope and executing the module's code in that scope to initialize the module. The new global scope is used as the module's attributes, as well as for global variable lookup for any code in the module.
Second, the import binds whatever names were requested. import whatever
binds the whatever
name to the whatever
module object. import whatever.thing
also binds the whatever
name to the whatever
module object. from whatever import somefunc
looks up the somefunc
attribute on the whatever
module object and binds the somefunc
name to whatever the attribute lookup finds.
Unused imports cannot be optimized out, because both the module loading and the name binding have effects that some other code might be relying on.
Upvotes: 2