两个Python文件之间的通信

时间:2017-04-21 06:32:45

标签: python import

我在导入文件方面遇到了问题,可以简化为:

a.py:

import b

a = 0
b.foo()

b.py:

import a

def foo():
    a.a=4

所以,我试图做的是:在文件a.py中调用b.py中的函数foo(),然后改变a.py中变量的值。这是我得到的错误:

  

AttributeError:module' b'没有属性' foo'

我做错了什么?这样做的正确方法是什么?

2 个答案:

答案 0 :(得分:1)

你的import is circular。你需要想出一种通过非循环导入进行测试的方法。例如创建一个你执行的新主文件;导入a.ab.foo

main.py

from b import foo
import a

a.a = 7
foo()

a.py

a = 0

b.py

import a

def foo():
    a.a=4

答案 1 :(得分:0)

首先,最重要的是进行循环导入,修复它并不是一个好主意。

但是尝试对代码进行小的更改并解决。

a.py:

function cancelLeave(elem, leaveTypeId) {
  var id = $(elem).closest('tr').attr('id')
  alert(id)
  $("#cancelLeave").modal("show");
  $('.sendCancelReq').val(id);
  sendCancelReq(leaveTypeId);

b.py:

from b import foo

a = 0
foo()
print a

运行a.py时,请注意def foo(): import a as filea filea.a=4 ,它正在执行两次。通过修复很多这样的事情你需要自担风险。 而不是做所有马戏团,更好地避免循环导入。