我想知道代码片段之间有没有区别
from urllib import request
和片断
import urllib.request
或者它们是否可以互换。如果它们是可互换的,那么哪个是“标准”/“首选”语法(如果有)?
发布于 2012-02-25 07:28:23
这取决于您在引用导入时希望如何访问导入。
from urllib import request
# access request directly.
mine = request()
import urllib.request
# used as urllib.request
mine = urllib.request()
为了简单起见或避免屏蔽内置内容,您还可以在导入时自己为其指定别名:
from os import open as open_
# lets you use os.open without destroying the
# built in open() which returns file handles.
发布于 2013-04-17 00:24:07
这是有区别的。在某些情况下,其中一个可以工作,而另一个不能。下面是一个例子:假设我们有以下结构:
foo.py
mylib\
a.py
b.py
现在,我想将b.py
导入到a.py
中。我想将a.py
导入到foo
中。我该怎么做呢?在a
中,我写了两个语句:
import b
在foo.py
中,我写道:
import mylib.a
好吧,这将在尝试运行foo.py
时生成一个ImportError
。解释器会抱怨a.py
(import b
)中的import语句说没有模块b,那么怎么解决这个问题呢?在这种情况下,将a
中的import语句更改为import mylib.b
将不起作用,因为a
和b
都在mylib
中。这里的解决方案(或至少一个解决方案)是使用绝对导入:
from mylib import b
发布于 2012-02-25 07:28:30
您在包中使用的是Python3 were。这两种形式都是可以接受的,没有一种形式的导入比另一种形式更可取。有时,当涉及多个软件包目录时,您可能需要使用以前的from x.y.z.a import s
在这个使用urllib包的特殊情况下,import urllib.request
和urllib.request
的第二种使用方式是标准库如何统一使用它。
https://stackoverflow.com/questions/9439480
复制相似问题