好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

关于Python如何避免循环导入方法介绍

在大型的Python工程中,由于架构设计不当,可能会出现模块间相互引用的情况。下面这篇文章主要给大家介绍了关于如何避免Python的循环导入问题的相关资料,需要的朋友可以参考借鉴,下面来一起看看吧。

pkg
 ├── __init__.py
 ├── module_a.py
 └── module_b.py 
# pkg/module_a.py 
from __future__ import print_function
import module_b
 
def action_a():
 print(module_b.action_b.__name__)
 
 
# pkg/module_b.py
from __future__ import print_function
import module_a
 
def action_b():
 print(module_a.action_a.__name__) 
# pkg/module_a.py
from __future__ import print_function
import pkg2.module_b
 
def action_a():
 print(pkg2.module_b.action_b.__name__)
 
 
# pkg/module_b.py
from __future__ import print_function
import pkg2.module_a
 
def action_b():
 print(pkg2.module_a.action_a.__name__) 
# pkg/module_a.py
from __future__ import print_function
 
def action_a():
 print(action_b.__name__)
 
from .module_b import action_b
 
 
# pkg/module_b.py
from __future__ import print_function
 
def action_b():
 print(action_a.__name__)
 
from .module_a import action_a 
# pkg/module_a.py
from __future__ import print_function
 
def action_a():
 from . import module_b
 print(module_b.action_b.__name__)
 
 
# pkg/module_b.py
from __future__ import print_function
 
def action_b():
 from . import module_a
 print(module_a.action_a.__name__) 
# pkg/module_a.py
from __future__ import print_function
 
def action_a():
 from .module_b import action_b
 print(action_b.__name__)
 
 
# pkg/module_b.py
from __future__ import print_function
def action_b():
 from .module_a import action_a
 print(action_a.__name__) 

这种方式虽然Python 2和3都支持,但编码不够优雅,影响代码可读性,不建议使用


本文讨论的问题,是Python中调用package时,应如何避免循环引入

当直接在命令行执行一个Python module时,适用情况不完全相同

以上就是关于Python如何避免循环导入方法介绍的详细内容,更多请关注Gxl网其它相关文章!

查看更多关于关于Python如何避免循环导入方法介绍的详细内容...

  阅读:37次