2013-05-25 3 views
-2

Я хотел бы знать, что разница между
импорта HTTPLIB и
из HTTPLIB импорта *
Кстати я использую Python 2.73.В чем разница между импортом httplib и импортом httplib *?

+0

Возможное дублирование [Подтверждение различия между импортом * и из импорта xxx *) (http://stackoverflow.com/questions/4436401/confirming-the-difference-between-import-and-from-xxx-import) –

ответ

0

С import httplib, вы должны сделать

httplib.HTTPConnection(host) 

С from httplib import *, вы могли бы сделать

HTTPConnection(host) 

Считается, лучше указать, что вы импортируете во втором способе, как и в from httplib import HTTPConnection

+0

Это предпочтение, но если вы используете метод 'from', лучше указать, что вы импортируете, вместо использования оператора' * '. – SethMMorton

0

Категория: Разное

>>> import httplib 
>>> SEE_OTHER 
NameError: name 'SEE_OTHER' is not defined 
>>> httplib.SEE_OTHER 
303 

>>> from httplib import * 
>>> SEE_OTHER 
303 
>>> httplib.SEE_OTHER 
NameError: name 'httplib' is not defined 

from httplib import * почти никогда * никогда не то, что вы хотите, за исключением, возможно, экспериментируя с httplib в интерактивном режиме.

Иногда вы хотите импортировать несколько имен из библиотеки, но в этом случае указать имена явно:

from httplib import SEE_OTHER, MOVED_PERMANENTLY 

Как импортировать модуль, но бывший создает один новое имя , httplib, в текущих глобал, в то время как последние вместо копирует все глобал из httplib в текущие глобал. **


* «Почти», потому что есть несколько хороших примеров использования даже в сценариях. Например, идиоматический способ обеспечения реализации модуля с помощью C-ускорителей Python заключается в завершении сценария Python foo.py с помощью from _foo import *.

** Это не совсем так, из-за __all__ и других данных, но достаточно близко.

Смежные вопросы