首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >“从...导入` vs `导入.`

“从...导入` vs `导入.`
EN

Stack Overflow用户
提问于 2012-02-25 07:24:32
回答 5查看 455.9K关注 0票数 334

我想知道代码片段之间有没有区别

代码语言:javascript
复制
from urllib import request

和片断

代码语言:javascript
复制
import urllib.request

或者它们是否可以互换。如果它们是可互换的,那么哪个是“标准”/“首选”语法(如果有)?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2012-02-25 07:28:23

这取决于您在引用导入时希望如何访问导入。

代码语言:javascript
复制
from urllib import request
# access request directly.
mine = request()

import urllib.request
# used as urllib.request
mine = urllib.request()

为了简单起见或避免屏蔽内置内容,您还可以在导入时自己为其指定别名:

代码语言:javascript
复制
from os import open as open_
# lets you use os.open without destroying the 
# built in open() which returns file handles.
票数 290
EN

Stack Overflow用户

发布于 2013-04-17 00:24:07

这是有区别的。在某些情况下,其中一个可以工作,而另一个不能。下面是一个例子:假设我们有以下结构:

代码语言:javascript
复制
foo.py
mylib\
    a.py
    b.py

现在,我想将b.py导入到a.py中。我想将a.py导入到foo中。我该怎么做呢?在a中,我写了两个语句:

代码语言:javascript
复制
import b

foo.py中,我写道:

代码语言:javascript
复制
import mylib.a

好吧,这将在尝试运行foo.py时生成一个ImportError。解释器会抱怨a.py (import b)中的import语句说没有模块b,那么怎么解决这个问题呢?在这种情况下,将a中的import语句更改为import mylib.b将不起作用,因为ab都在mylib中。这里的解决方案(或至少一个解决方案)是使用绝对导入:

代码语言:javascript
复制
from mylib import b

来源:Python: importing a module that imports a module

票数 26
EN

Stack Overflow用户

发布于 2012-02-25 07:28:30

您在包中使用的是Python3 were。这两种形式都是可以接受的,没有一种形式的导入比另一种形式更可取。有时,当涉及多个软件包目录时,您可能需要使用以前的from x.y.z.a import s

在这个使用urllib包的特殊情况下,import urllib.requesturllib.request的第二种使用方式是标准库如何统一使用它。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9439480

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档