Чем import os отличается от from os import path?
Видел оба варианта в коде. Один пишет os.path.join(...), другой просто path.join(...). В чём практическая разница и что лучше использовать?
2 ответа
import os тащит весь модуль, и ты обращаешься через точку: os.path, os.listdir, os.getcwd. from os import path достаёт в текущее пространство имён только path, и ты пишешь короче — path.join(...), но os.listdir так уже не вызвать, его ты не импортировал.
import os
os.path.join('a', 'b')
from os import path
path.join('a', 'b')
Практический совет: import os обычно читаемее — сразу видно, откуда функция. from ... import ... хорош, когда из модуля нужна пара конкретных вещей и не хочется длинных префиксов. Минус второго — выше шанс конфликта имён (вдруг у тебя уже есть своя переменная path).
Разницы в скорости нет, оба грузят весь os. Отличие только в том, какие имена попадут в твой код и как ты к ним обращаешься.