Почему не рекомендуется смешивать ‘from x import y’ и ‘import x’?

#python #import

#python #импорт

Вопрос:

Мой скрипт содержит следующие две строки в качестве операторов импорта:

 import os
from os import path
  

Это кажется логичным подходом для моего скрипта: я использую os.path его очень часто, поэтому я хочу получить к нему доступ как path . С другой стороны, мне нужны дополнительные методы from os , но очень редко, поэтому я могу написать os.access(...) , например.

Почему это не рекомендуется? pychecker например, жалуется на это.

Комментарии:

1. Есть ли особая причина, по которой вы не можете просто написать 3 дополнительных символа os. ?

2. почему бы просто path = os.path

3. @lostyzd Почему вы должны это делать, чтобы избежать недопустимого предупреждения?

Ответ №1:

Обычно странно как импортировать имя из модуля, так и импортировать весь модуль. В этом случае вы импортируете подмодуль, так что это не кажется плохим, хотя большинство людей просто используют «os.path» в своих вызовах функций.

То, что pychecker это не нравится, не означает, что вы не можете этого сделать. Отключите это предупреждение.

Комментарии:

1. Вот почему это предупреждение. Pychecker не знает, является ли это проблемой, поэтому вы будете проинформированы.

Ответ №2:

Вероятно, это связано с тем, что ваш скрипт затем импортирует os.path дважды, используя дополнительные ресурсы. Возможно, вам следует просто вызвать все функции os , которые вам понадобятся.

Комментарии:

1. Модули импортируются только один раз, дополнительные ресурсы не используются.

2. path не импортируется дважды даже в смысле «у него два имени», поскольку это модуль, а не класс os .

3. В этом случае, вероятно, это просто не рекомендуется, потому что это сбивает с толку. поддерживать.

4. @Chriszuma это потому, что pychecker не понимает path , что это модуль, а не класс.