【问题标题】:What is the difference between import httplib and from httplib import *? [duplicate]import httplib 和 from httplib import * 有什么区别? [复制]
【发布时间】:2013-05-20 15:49:24
【问题描述】:

我想知道两者的区别是什么
导入 httplib 和
从 httplib 导入 *
顺便说一句,我使用的是 python 2.73。

【问题讨论】:

标签: python module httplib


【解决方案1】:

使用import httplib,您必须这样做

httplib.HTTPConnection(host)

有了from httplib import *,你可以做到

HTTPConnection(host)

在第二种方法中指定要导入的内容会更好,如from httplib import HTTPConnection

【讨论】:

  • 这是首选,但如果您使用from 方法,最好指定您要导入的内容,而不是使用* 运算符。
【解决方案2】:

以下是不同的例子:

>>> 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__ 和其他各种细节,但现在已经足够接近了。

【讨论】:

    猜你喜欢
    • 2019-06-07
    • 2011-07-04
    • 2015-08-24
    • 2017-09-18
    • 2020-07-23
    • 1970-01-01
    • 2012-01-15
    • 2016-02-16
    • 2018-09-21
    相关资源
    最近更新 更多