ソースコードを示してもらわないと、何が起きているのか判断するのは難しいです。
import では、ファイルを読み込んでモジュールオブジェクトを作って変数に代入します。
モジュールオブジェクトを作る際にモジュールに書かれたスクリプトが実行されます。
モジュールオブジェクトはキャッシュされ、2回目以降のimportではキャッシュしたモジュールオブジェクトが再利用され、再実行はしません。
モジュールには定数・変数の初期化と関数・クラス定義をしておき、1回の実行で動作準備完了し、関数やクラスを呼び出して使えるように作ります。
そして、スケジュール処理からモジュール内の関数やクラスを呼び出すように作ります。
>>> import math
>>> math
<module 'math' (built-in)>
>>> id(math)
140070534706096
>>> import re
>>> re
<module 're' from '/usr/lib/python3.8/re.py'>
>>> id(re)
140070534743200
>>> import math # 2回目以降のimportはキャッシュを再利用、同一id
>>> id(math)
140070534706096
>>> import re
>>> id(re)
140070534743200
>>> globals() # importしたモジュールはグローバル変数に代入されている
{'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <class'_frozen_importlib.BuiltinImporter'>, '__spec__': None, '__annotations__': {}, '__builtins__': <module 'builtins' (built-in)>,
'math': <module 'math' (built-in)>,
're': <module 're' from '/usr/lib/python3.8/re.py'>}
「PEP8: Pythonコードのスタイルガイド」に書いてありますが、import文はファイルの先頭にまとめて書きましょう。
import文 は常にファイルの先頭、つまり モジュールコメントや docstring の直後、そしてモジュールのグローバル変数や定数定義の前に置くようにします。