前提・実現したいこと
プログラム実行結果の違いが判らない
発生している問題・エラーメッセージ
循環importの仕組みが分からなったので簡単なプログラムを使って実行したのですが、分からない部分がありました
該当のソースコード
test1.py
python
1import test_2 2 3test1num = 100 4ans = test_2.calc() 5a=ans 6print('test1:a = ', ans)
test_2.py
import test_1 test2num = 10 a = 0 def calc(): a = test_1.test1num +test2num return a print("test2 :a = ", a)
上記の二つのプログラムを同じ階層に配置し、それぞれを実行してみました
試したこと
それぞれのプログラムごとに実行したところ異なる結果が得られました。
test1を実行した場合
Traceback (most recent call last): File "c:\VSCodeProject\Project Files\Python\test1.py", line 1, in <module> import test2 File "c:\VSCodeProject\Project Files\Python\test2.py", line 1, in <module> import test1 File "c:\VSCodeProject\Project Files\Python\test1.py", line 4, in <module> ans = test2.calc() AttributeError: partially initialized module 'test2' has no attribute 'calc' (most likely due to a circular import)
test2.pyを実行した場合
test2 :a = 0 test1:a = 110 test2 :a = 0
どちらも互いのプログラムをimportしているのに対し、test2.pyのみ正常に実行されました。また、test2.pyではcalc()を呼び出していないにもかかわらず計算されて結果が表示されました。何が原因なのか教えていただきたいです。
補足情報
VSCodeでPython3.8.3を使用しました。
回答3件
あなたの回答
tips
プレビュー