Интересно, что импорт os.path будет импортировать все os. в интерактивной программе:
import os.path
dir(os)
Результат будет таким же, как если бы вы только что импортировали os. Это связано с тем, что os.path будет ссылаться на другой модуль, на основе которого у вас есть операционная система, поэтому python будет импортировать os, чтобы определить, какой модуль загружается для пути.
reference
С некоторыми модулями, говоря import foo
не подвергнет foo.bar
, так что я предполагаю, что это действительно зависит от конструкции конкретного модуля.
В общем, просто импортировать явные модули, которые вам нужны, должны быть немного быстрее. На моей машине:
import os.path
:7.54285810068e-06
секунд
import os
:9.21904878972e-06
секунд
Эти времена достаточно близко, чтобы быть довольно незначительным. Возможно, вашей программе придется использовать другие модули от os
либо сейчас, либо позже, поэтому обычно имеет смысл просто пожертвовать двумя микросекундами и использовать import os
, чтобы избежать этой ошибки позднее. Я обычно предпочитаю импортировать ОС в целом, но вижу, почему некоторые предпочитают import os.path
технически быть более эффективными и передавать читателям код, который является единственной частью модуля os
, который необходимо будет использовать. Это, по сути, сводится к вопросу стиля в моем сознании.
Отличный, очень информативный ответ! Поздравления! Несмотря на то, что он напрямую не отвечает на вопрос, у него много полезных деталей. Но не могли бы вы подробно остановиться на «Это согласуется с тем, как os.path документирован»? Как сказал Крис Хулан, пример os.walk() импортирует только os вместо os.path. –
@Denilson, он включает прямой ответ: я всегда сам «импортирую os.path» и думаю, что это лучше. В разделе «Это согласуется с тем, как os.path документирован». Я имел в виду, что ему предоставляется собственная страница в документации по адресу http://docs.python.org/library/os.path.html. –
Почему? Почему так делается? – user1712447