python中import星_python - import语句python3中的更改

无论何时导入相对于当前脚本/包的包,都会发生相对导入。

以下面的树为例:

mypkg

├── base.py

└── derived.py

现在,您的derived.py需要math的内容。在Python 2中,您可以这样做(在../中):

from base import BaseThing

Python 3不再支持它,因为它不明确你是否想要'relative'或'absolute'math.换句话说,如果在系统中安装了一个名为../的Python包,你就会得到错误的包。

相反,它要求您使用显式导入,它明确指定模块在路径上的位置。 您的math看起来像是:

from .base import BaseThing

领先的math表示'从模块目录导入../'; 换句话说,..mod映射到../mod.py。

类似地,有math前缀,其上升到目录层次结构,如../(与..mod映射到../mod.py),然后...上升两个级别(../../mod.py),依此类推。

但是请注意,上面列出的相对路径是相对于当前模块(math)所在的目录,而不是当前工作目录。

@BrenBarn已经解释了明星进口案例。 为了完整,我将不得不说同样的;)。

例如,您需要使用一些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))

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值