【发布时间】:2013-05-20 15:49:24
【问题描述】:
我想知道两者的区别是什么
导入 httplib 和
从 httplib 导入 *
顺便说一句,我使用的是 python 2.73。
【问题讨论】:
我想知道两者的区别是什么
导入 httplib 和
从 httplib 导入 *
顺便说一句,我使用的是 python 2.73。
【问题讨论】:
使用import httplib,您必须这样做
httplib.HTTPConnection(host)
有了from httplib import *,你可以做到
HTTPConnection(host)
在第二种方法中指定要导入的内容会更好,如from httplib import HTTPConnection
【讨论】:
from 方法,最好指定您要导入的内容,而不是使用* 运算符。
以下是不同的例子:
>>> 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__ 和其他各种细节,但现在已经足够接近了。
【讨论】: