Вы создаете циклическую зависимость (см., Например, в этом объяснении ), чего вы обычно избегаете.
Ход программы будет примерно следующим:
- Вы звоните
python main.py
import task
выполняется, чтобы загрузить print_func
из task.py
task.py
выполняется, возвращаясь прямо к main.py
для извлечения list_list
...
Чтобы устранить проблему, вы можете сделать следующее:
main.py:
import task
list_list = ["test1","test2"]
# Only run this, if main.py is run directly, not in import
if __name__ == "__main__":
task.print_func()
task.py: (без изменений)
from main import list_list
def print_func():
for x in list_list:
print(x)
Это изменение позволяет task.py
импортировать list_list
без попытки выполнить task.print_func
, который не может быть определен в данный момент (так как его определение зависит от list_list
).
Некоторые общие замечания:
- Я не понимаю, почему вы хотите импортировать
list_list
из main для использования в task.print_func
- лучше передать список в качестве аргумента вмое мнение. - Выполните как можно меньше кода на уровне отступа 0 в файле Python, который вы хотите импортировать в другое место. Прочитайте, например, здесь: Что делать, если __name__ == "__main__": do? для некоторых деталей.
Учитывая все вышесказанное, я бы сделал это следующим образом:
main.py
import task
if __name__ == "__main__":
list_list = ["test1","test2"]
task.print_func(list_list)
task.py:
def print_func(list_list):
for x in list_list:
print(x)