程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了导入语句python3中的更改大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决导入语句python3中的更改?

开发过程中遇到导入语句python3中的更改的问题如何解决?下面主要结合日常开发的经验,给出你关于导入语句python3中的更改的解决方法建议,希望对你解决导入语句python3中的更改有所启发或帮助;

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

例如,虑以下树:

@H_775_7@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

领导.说“ base从模块目录导入”;换句话说,.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))

解决方法

什么是相对进口?在python2中还允许在其他什么地方导入star?请举例说明。

大佬总结

以上是大佬教程为你收集整理的导入语句python3中的更改全部内容,希望文章能够帮你解决导入语句python3中的更改所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。