Это очень ПЛОХАЯ практика по двум причинам:
- Читаемость кода
- Риск переопределения переменных / функций и т. Д.
Для точка 1 : Давайте рассмотрим пример этого:
from module1 import *
from module2 import *
from module3 import *
a = b + c - d
Здесь, увидев код, никто не получит представление о том, из какого модуля b
c
и d
на самом деле принадлежит.
С другой стороны, если вы сделаете это следующим образом:
# v v will know that these are from module1
from module1 import b, c # way 1
import module2 # way 2
a = b + c - module2.d
# ^ will know it is from module2
Это намного чище для вас, и у нового человека, присоединившегося к вашей команде, будет лучшая идея.
Для точка 2 : допустим, переменные module1
и module2
имеют значение b
.Когда я делаю:
from module1 import *
from module2 import *
print b # will print the value from module2
Здесь значение из module1
теряется.Будет трудно отладить, почему код не работает, даже если b
объявлен в module1
, и я написал код, ожидающий, что мой код будет использовать module1.b
Если у вас одинаковые переменные в разныхмодули, и вы не хотите импортировать весь модуль, вы можете даже сделать:
from module1 import b as mod1b
from module2 import b as mod2b