2013-09-10 1 views
3

Почему люди делаютпитона: импорт some_module через other_module

import os 
import sys 
print sys.version 

Если они могут сделать

import os 
print os.sys.version 

Почему двойной импорт некоторые базовые модули (случайные, SYS ... много тех), если вы уже знаете, что те же модули импортируются другими модулями, которые вы уже используете? Являются ли такие вызовы некорректными для использования в программировании на питоне?

ответ

10

Потому что вы не должны полагаться на детали реализации другого модуля. Если другой модуль останавливает с использованием sys, тогда ваш первый модуль теперь сломан.

Импорт просто создает ссылку в текущем пространстве имен. Вы не загружаете модуль в память дважды при использовании import, поэтому импорт модуля в двух разных местах не стоит вам ничего.

+0

Спасибо, Martijn. Я пропустил тот факт, что код импорта other_module может быть изменен без моего ведома, и он нарушит мой код some_module соответственно. –