美文网首页
Python 循环导入的问题

Python 循环导入的问题

作者: 樊海鹏 | 来源:发表于2018-08-09 19:44 被阅读0次

首先出现这种问题是因为没有规划好层级,哪些模块和哪些模块逻辑上应该在一起,哪些模块是公共的依赖项,哪些是实际的业务代码,按你的需求,显然B.Model应该是一个独立的模块才对,把第一和第三层合成一个模块然后把第二层独立出去就会出现你这种情况。循环引用是小问题,代码以后难维护、理不清实现的逻辑才是大问题。其次,Python根本就是可以循环引用的,只要你循环引用中的模块并不是在定义阶段就马上使用,比如:#module1.py


class Model(object):
    def do_something(self):
        module2.print_model(self)

#module2.py
import module1

def print_model(model):
    print repr(module1.Model())

两个import其中的一个在导入时会为空,取决于import顺序,但由于只有在函数内部使用,只要import阶段没有执行到相应的位置就不会有问题。也就是说出现这种情况时只要避免三种使用方法:

  1. from ... import ... (这个去掉肯定没啥问题)
  2. 直接执行的代码(本来大部分情况下你都应该避免的)
  3. 类的继承(基类的模块去import派生类的模块本来就很奇怪啊)

import放到函数里面,放到最下面,都可以解决问题,但治标不治本,治本的还是要重新划分模块,逻辑理顺了就不会出现循环import

相关文章

  • Python 循环导入的问题

    首先出现这种问题是因为没有规划好层级,哪些模块和哪些模块逻辑上应该在一起,哪些模块是公共的依赖项,哪些是实际的业务...

  • 【python】导入包循环问题

    0x01 问题描述 在大型的Python工程中,由于架构设计不当,可能会出现模块间相互引用的情况。 A调用B的函数...

  • 如何避免Python的循环导入问题

    本文首载于Gevin的博客未经Gevin授权,禁止转载原文链接:如何避免Python的循环导入问题 Python ...

  • 2019-03-25

    Python设置掩码及循环 一、设置掩码 导入getpass库,getpass可将密码设为掩码 二、循环 1、wh...

  • Python 循环导入 原理演示

    有什么不对的地方请多多指教 首先看看代码 p1.py:先导入p2,然后再定义a=1,然后输出p2中的b p2.py...

  • 浅谈python中的循环导入

    循环导入会报错,报找不到依赖的错误,也就是报找不到模块的错误。如下类似。 这确实很头疼,明明有这个文件或模块,就是...

  • Gephi 初次使用问题总结

    csv文件导入问题笔者是通过python保存的csv文件导入数据,导入时,在导入边数据时会提示‘需要源和目标的编号...

  • python导入模块的问题

    python导入模块时查找模块路径方法有相对路径和绝对路径两种,相对路径在只有项目中只包含py文件和默认文件夹时可...

  • python模块导入的问题

    从模块导入函数时,通常可以使用 import somemodule 或者 from somemodule imp...

  • python循环执行

    python有两种循环,while循环和for循环。 python循环的流程图如下: while循环 python...

网友评论

      本文标题:Python 循环导入的问题

      本文链接:https://www.haomeiwen.com/subject/fcncbftx.html