Насколько я понял, в python есть 3 метода импорта
1.from 'имя_модуля' import 'имя_класса'
2.import 'имя_модуля'
3.from 'имя_модуля' import *
Если использовать 2 способ, то обращаться к классам придётся:
'имя_модуля'.'имя_класса'
Во всех остальных способах обращение без точки, так словно этот класс уже в нашем модуле. Но почему-то не рекомендуют использовать 3 способ, объясняя это тем, что возникает возможность конфликта имен между имен класса импортируемого модуля и модуля, в котором мы находимся.
Почему же такого не происходит, когда мы импортируем 2-ым способом. Ведь там и там происходит импорт всего файла и создания тех же переменных в нашем пространстве имен(namespace) или нет?
Что и в каком случае лучше использовать?
имя_модуляилиимя_класса, а вот в третьем случае хрен знает что появится, пока не заглянуть в содержимое импортируемого модуля (а постоянно заглядывать туда не очень удобно, знаете ли) – andreymal Dec 04 '17 at 10:17from модуль import *не следует кроме особых случаев использовать» можно отдельно спросить. – jfs Dec 04 '17 at 11:52from модуль import *обычно используют, когда в модуле такая туча классов и констант, что код начинает слишком "раздуваться". Типичные случаи -tkinter, tkinter.ttk, ctypesпри этом, естетсвенно, бывают конфликты имен... которые я, например, уже ловил, и понять, в чем дело, бывает достаточно трудно.... – Alex Titov Dec 04 '17 at 12:59