bpo-32192: A basic lazy importer example (GH-21330)

* Add example on lazy imports

* Use four spaces for indentation

* change to console
This commit is contained in:
Joannah Nanjekye 2020-07-13 18:31:02 -03:00 committed by GitHub
parent 4f309abf55
commit 8dd32fe645
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 23 additions and 0 deletions

View File

@ -1719,6 +1719,29 @@ To import a Python source file directly, use the following recipe
spec.loader.exec_module(module)
Implementing lazy imports
'''''''''''''''''''''''''
The example below shows how to implement lazy imports::
>>> import importlib.util
>>> import sys
>>> def lazy_import(name):
... spec = importlib.util.find_spec(name)
... loader = importlib.util.LazyLoader(spec.loader)
... spec.loader = loader
... module = importlib.util.module_from_spec(spec)
... sys.modules[name] = module
... loader.exec_module(module)
... return module
...
>>> lazy_typing = lazy_import("typing")
>>> #lazy_typing is a real module object,
>>> #but it is not loaded in memory yet.
>>> lazy_typing.TYPE_CHECKING
False
Setting up an importer
''''''''''''''''''''''