栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

导入语句python3中的更改

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

导入语句python3中的更改

每当导入相对于当前脚本/软件包的软件包时,就会进行相对导入。

例如,考虑以下树:

mypkg├── base.py└── derived.py

现在,你derived.py需要从中获得一些东西

base.py
。在Python 2中,你可以这样做(在中
derived.py
):

from base import baseThing

Python 3不再支持该功能,因为它是否明确要求“相对”还是“绝对” base。换句话说,如果base系统中安装了一个名为Python的软件包,那么你将得到错误的软件包。

相反,它要求你使用显式导入,这些显式导入在类似路径的基础上显式指定模块的位置。你derived.py将看起来像:

from .base import baseThing

领导

.
说“ b
ase
从模块目录导入”;换句话说,
.base
映射到
./base.py

类似地,有一个..前缀沿目录层次结构向上../(如

..mod
映射到
../mod.py
),然后沿…两个层次向上
(../../mod.py)
,依此类推。

但是请注意,上面列出的相对路径是相对于当前模块

(derived.py)
所在的目录的,而不是相对于当前工作目录的。

@BrenBarn
已经解释了star导入案例。为了完整性,我将不得不说相同;)。

例如,你需要使用一些math功能,但只能在单个功能中使用它们。在Python 2中,你被允许是半懒惰的:

def sin_degrees(x):    from math import *    return sin(degrees(x))

请注意,它已经在Python 2中触发了警告:

a.py:1: SyntaxWarning: import * only allowed at module level  def sin_degrees(x):

在现代Python 2代码中,你应该这样做,而在Python 3中,你必须执行以下任一操作:

def sin_degrees(x):    from math import sin, degrees    return sin(degrees(x))

要么:

from math import *def sin_degrees(x):    return sin(degrees(x))


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/614543.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号