python 相互import,python中关于import引用

  python 相互import,python中关于import引用

  本文主要介绍python中py文件之间相互导入的问题。本文用一个例子来演示如何解决python中的循环引用问题。有需要的朋友可以参考一下。

  00-1010问题背景示例演示

  

目录

  在调试脚本时,我遇到了一个问题:ImportError :无法从“study _ case.a”中导入名称“a”(/users/rch era/pycharmprojects/test/study _ case/a . py)

  具体情况如下:

  前几天写了一个py文件,它的作用主要是创建数据(暂时叫create_data.py,每一条数据都会生成一个唯一的ID);

  同时编写另一个py文件,其功能主要是操纵数据,比如编辑、删除数据(暂称为operate _ data . py);

  要对数据进行操作,必须传入数据对应的惟一id,所以create_data.py中生成数据的方法被导入到operate_data.py中

  在这一点上,一切都很顺利,没有任何问题。

  由于某些情况,我需要在数据生成后立即删除它。

  我打算在create_data.py中直接写另一个删除数据的方法,但是后来我想,删除数据的方法之前已经在operate_data.py中定义过了。

  在这种情况下,直接在create_data.py中导入operate_data.py,并参考其删除数据的方法。

  但实际上,并没有达到预期的效果。按照上述思路调整脚本后,create_data.py和operate_data.py都无法运行,会提示顶部列出的错误~

  我在网上搜了一下,大致原因是create_data.py和operate_data.py两个文件互相调用。

  当然不是说python不能循环引用。只是我的文笔有问题。然后我继续深入搜索,在一些大神的博客里找到了解决办法。

  参考文章:

  https://fishc.com.cn/forum.php?mod=viewthreadtid=60873 page=1 # PID 2337627

  https://www.zhihu.com/question/19887316

  https://blog . igevin . info/posts/how-to-avoid-python-circle-import-error/

  赞美诗大神们都建议不要在python中交叉引用(即不要在A中调用B,然后在B中调用A)。最好规划一下代码的层次结构,哪些是公共方法,哪些是业务逻辑。提前想到这些对后期保养有好处~

  好的,那么,根据网上给出的方法,用一个例子来演示如何解决python中的循环引用问题。

  

问题背景

  准备2份拷贝文件

  a.py

  从研究_案例. B导入B

  A:级

  @静态方法

  定义a1(编号):

  退货数量*数量

  定义a2():

  值=B()。乙(1)

  返回值

  if __name__==__main__:

  t=A()

  打印(t.a1(2))

  碧桂园

  从研究案例导入

  B:级

  @静态方法

  定义b(x):

  值=A()a1(1)。

  返回值x

  if __name__==__main__:

  t=B()

  打印(t.b(1))

  文件结构如下

  按照上面的写法,运行A或B会给出一个错误,如下所示

  解决方案1:在文件的顶部介绍,而不是从,使用绝对介绍。

  比如修改b.py文件的内容如下,直接导入A文件

  导入研究_案例. a

  B:级

  @静态方法

  定义b(x):

  value=study _ case . a . a()a1(1)。

  返回值x

  if __name__==__main__:

  t=B()

  打印(t.b(1))

  但是,我试过了。如果我使用from,我将只导入A文件级别,并且不会报告错误,如下所示

  从研究案例导入

  B:级

  @静态方法

  定义b(x):

  值=A . A()a1(1)。

  返回值x

  if __name__==__main__:

  t=B()

  打印(t.b(1))

  解决方案2:介绍在函数的顶部,可以从

  比如修改b.py文件的内容如下,在函数名下面第一行引入一个文件的类。

  B:级

  @静态方法

  定义b(x):

  从研究案例导入

  值=A()a1(1)。

  返回值x

  if __name__==__main__:

  t=B()

  打印(t.b(1))

  关于python中py文件相互导入的这篇文章到此为止。关于pythonpy文件导入的更多信息,请搜索热门IT软件开发工作室之前的文章或者继续浏览下面的相关文章。希望大家以后多多支持热门IT软件开发工作室!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: