У меня есть 2 файла Python file1.py и file2.py в одном каталоге.
#file1.py
import file2 as f2
graph={ 0: [1,2],
1: [0,3,2,4],
2: [0,4,3,1],
3: [1,2,5],
4: [2,1,5],
5: [4,3]
}
def function1(graph):
print(f2.C1)
Другой файл -
#file2.py
import file1 as f1
graph=f1.graph
def function2(graph):
#Perform some operation on graph to return a dictionary C
return C
C1=function2(graph)
Когда я запускаю file1, я получаю сообщение об ошибке
module 'file2' has no attribute 'C1'
И когда я запускаю file2 и пытаюсь проверить значение переменной C1, я получаю сообщение об ошибке:
module 'file1' has no attribute 'graph'
Что я должен сделать, чтобы правильно импортировать эти файлы, чтобы соответствующим образом обмениваться значениями между файлами?
Обратите внимание, что когда я реализую переменную graph в file2 напрямую, а не извлекаю из file1, она работает отлично, но начинает возникать проблема при обмене переменными между файлами.
Отредактировано:
Я добавил более усовершенствованную версию кода, чтобы упростить проблему.
#file1
import file2 as f2
def fun1(graph):
C=[None]*20
for i in range(20):
# Some algorithm to generate the subgraphs s=[s1,s2,...,s20]
C[i]=f2.fun2(s[i])
print(C[i])
graph={ 0: [1,2],
1: [0,3,2,4],
2: [0,4,3,1],
3: [1,2,5],
4: [2,1,5],
5: [4,3]
}
def getGraph():
return graph
fun1(graph)
Другой файл file2.py
import file1 as f1
graph_local=f1.getGraph()
#Some operations on graph_local to generate another graph 'graph1' of same "type" as graph_local
def fun2(graph1):
#Perform some operation on graph1 to return a dictionary C
return C
Если я создаю test.py, как упомянуто здесь ,
#test.py
from file1 import fun1
fun1(None)
Когда я запускаю test.py или file2.py, возникает ошибка
module 'file1' has no attribute 'getGraph'
тогда как при запуске file1.py,
module 'file2' has no attribute 'C'