您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

如何在Python中单独导入子模块?

5b51 2022/1/14 8:21:54 python 字数 2986 阅读 525 来源 www.jb51.cc/python

我有这个结构:. └── module ├── __init__.py └── submodule ├── __init__.py ├── foo.py └── bar.py 在module.submodule.__init__.py我有这个:import foo import bar 在mod

概述

我有这个结构:

.
└── module
    ├── __init__.py
    └── submodule
        ├── __init__.py
        ├── foo.py
        └── bar.py

在module.submodule.__init__.py我有这个:

import foo
import bar

在module.submodule.foo.py我有这个:

import very_heavy_third_party_module as vhtpm
...

我想只导入bar,但是我被foo放慢了速度(让我们想象foo和module / __ init__.py中有一个丑陋的time.sleep(3)).

所以我的目标是在下面写这个,而不会被模块的其他部分放慢速度:

from module.submodule.bar import saybar
saybar()

我怎样才能导入位于子模块栏中的saybar?

> module.__init__.py
> module.submodule.__init__.py
> module.submodule.bar.py

运行.由于module.submodule.__init__.py包含import foo,因此导入了foo,并且它的所有顶级代码(包括import very_heavy_third_party_module为vhtpm)也会运行,导致速度减慢.

一些可能的解决方案是:

>从__init__.py中移出尽可能多的代码.将__init __.pys留空是常见的做法 – 如果有一些功能,您可能需要考虑将其移动到自己的模块.一旦导入行是唯一剩余的,您可以删除它们,因为它们对命名空间没有任何影响.
>将foo.py中的import vhtpm从顶层重新定位(例如,转换为模块中其他内容调用函数).这不是很干净,但如果您需要优化,可能对您有用.

总结

以上是编程之家为你收集整理的如何在Python中单独导入子模块?全部内容,希望文章能够帮你解决如何在Python中单独导入子模块?所遇到的程序开发问题。


如果您也喜欢它,动动您的小指点个赞吧

除非注明,文章均由 laddyq.com 整理发布,欢迎转载。

转载请注明:
链接:http://laddyq.com
来源:laddyq.com
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


联系我
置顶