← Все вопросы

Чем import os отличается от from os import path?

Задан 5 месяцев назад652 просмотров3 ответа
12

Видел оба варианта в коде. Один пишет os.path.join(...), другой просто path.join(...). В чём практическая разница и что лучше использовать?

3 ответа

21

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).

8

Разницы в скорости нет, оба грузят весь os. Отличие только в том, какие имена попадут в твой код и как ты к ним обращаешься.

Сергей Малишевский Важное уточнение: from os import path НЕ грузит часть модуля, грузится весь os всё равно · 5 месяцев назад
0

import os - импортирует весь модуль os. Чтобы использовать что-то из него, нужно писать os.что-то. from os import path - импортирует только подмодуль path (именно его, а не весь os). Использовать можно без префикса os.

Ваш ответ

Войдите, чтобы ответить на вопрос.