mirror of https://github.com/python/cpython.git
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:
parent
4f309abf55
commit
8dd32fe645
|
@ -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
|
||||
''''''''''''''''''''''
|
||||
|
|
Loading…
Reference in New Issue