mirror of
https://github.com/python/cpython.git
synced 2025-09-27 02:39:58 +00:00
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
1 changed files with 23 additions and 0 deletions
|
@ -1719,6 +1719,29 @@ To import a Python source file directly, use the following recipe
|
||||||
spec.loader.exec_module(module)
|
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
|
Setting up an importer
|
||||||
''''''''''''''''''''''
|
''''''''''''''''''''''
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue