Рубрики
Без рубрики

Почему вы должны держаться подальше от циклического импорта в Python

Циклический импорт – это то, с которым когда -то сталкивается каждый новый программист и тратит довольно хорошее количество … Tagged с Python, ShowDev, WebDev.

Циклический импорт – это то, с которым когда -то сталкивается каждый новый программист и тратит довольно хорошее количество времени, исправляя все, что будет ошибкой, только чтобы узнать, что это было таким простой исправлением.

Давайте сначала поймем, что такое циклический импорт

Циклический импорт

Давайте возьмем два разных файла Python с именем test1.py и test2.py

# Test 1

import test2

def disp1():
    print("Test 1")

disp1()


И

# Test 2

import test1

def disp2():
    print("Test 2")

disp2()


Как только это сделано, давайте попробуем запустить один из файлов.

Это сработало как шарм.

Например: если я запускаю test1.py Файл, я получаю следующий выход

Test 1
Test 2
Test 1

Вышеуказанный вывод кажется законным, однако давайте внесем небольшое изменение нашего кода.

Давайте импортируем функции, в частности, вместо всего файла.

# Test 1

from test2 import disp2

def disp1():
    print("Test 1")

disp1()
disp2()

И

# Test 2

from test1 import disp1

def disp2():
    print("Test 2")

disp2()
disp1()

Попробуем запустить test1.py файл снова.

Теперь мы получаем следующую ошибку

Traceback (most recent call last):
  File "test1.py", line 1, in 
    from test2 import disp2
  File "/home/deepjyoti30/Python/tempf/test2.py", line 1, in 
    from test1 import disp1
  File "/home/deepjyoti30/Python/tempf/test1.py", line 1, in 
    from test2 import disp2
ImportError: cannot import name 'disp2' from partially initialized module 'test2' (most likely due to a circular import) (/home/deepjyoti30/Python/tempf/test2.py)

Если вы правильно прочитали ошибку, Python предлагает, чтобы мы делаем циклический импорт.

Почему?

Итак, когда мы позвонили только Импорт Тест1 , это работало нормально Но когда мы попытались импортировать определенную функцию, она бросила эту ошибку.

Это потому, что, когда мы пишем Импорт оператор, весь файл не выполняется в отличие от того, когда мы пишем Из импорта теста что -то который на самом деле должен убедиться, что файл выполняется так, чтобы существует имя, которое мы импортируем.

Это так просто.

Но в этом примере у нас было просто два файла с по 10 строк в каждом. Давайте рассмотрим это в проекте 1000 линий, где по ошибке вы сделали циклический импорт.

Одна циклическая линия импорта может сломать весь проект, а Python – Python, вы можете даже не найти путь ошибки, пока пользователь фактически не указал его (поскольку он работает на переводчике, DUH).

Вот почему мы должны опасаться внести циклический импорт в проекте по ошибке.

Я лично столкнулся с этим, когда работал над своим первый Big Python Project и я видели, как коллеги -разработчики не смогли решить эту проблему до такой степени, что фактически добавили Помощь необходима Этикетка в выпуске GitHub.

Итак, будьте осторожны, когда вы делаете импорт в Python с этого момента;-P

Я также пишу на своей личной странице. Проверьте это на другие мои сообщения. Ваше здоровье.

Оригинал: “https://dev.to/deepjyoti30/why-you-should-keep-away-from-cyclic-imports-in-python-1n75”