Мое понимание неверно?
Да, потому что строка from file_a import A
импортирует только класс A
в пространство имен file_b
.Пространство имен file_a
оставлено в покое.Если бы это было не так, было бы бессмысленно иметь оба синтаксиса:
import modulename
from modulename import something
, как будто ваше мышление было правильным, тогда после второй формы вы всегда сможете использовать modulename.someotherthing
.
Если да, то есть ли способ иметь общий импорт и глобальные переменные для файлов?
Да, с оператором star *
:
from modulename import *
но это вызывает проблему загрязнения пространства имен, например from file_a import *
импортирует в file_b
также весь импорт, выполненный в file_a
.Вы в конечном итоге потеряете контроль над своим импортом, и это укусит вас некоторое время ... поверьте мне в этом!
Когда по какой-то причине from module import *
требуется, обходной путь к пространству именЗагрязнение должно быть определено в module
переменной __all__
, которая включает белый список того, что следует импортировать с оператором звездочки.
HTH!