首页 >后端开发 >Python教程 >Python 3 中的导入语句有何变化?

Python 3 中的导入语句有何变化?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-12-02 07:26:10273浏览

How Have Import Statements Changed in Python 3?

Python 3 中导入语句的变化

在 Python 3 中,导入机制进行了重大修改,引入了相对导入和导入的新规则。限制明星进口。

什么是亲属导入?

相对导入是指相对于文件系统中当前模块位置的模块或包的导入语句。例如,考虑以下文件结构:

mypkg/
  __init__.py
  module1.py
  module2.py

在 module2.py 中,语句 from module1 import Foo 将是相对导入,因为它从同级模块 module1 导入 Foo 类。

显式相对导入

Python 3 需要显式相对导入,它清楚地指定了导入的模块。导入声明中的前导句点(“.”)表示相对导入。例如, from .module1 import Foo 从相对模块 module1 导入 Foo。

删除隐式相对导入

在 Python 2 中,隐式相对导入允许模块导入时未明确指定其位置。但是,这种行为在 Python 3 中已被弃用。例如,Python 2 中的语句 import module1 会从当前目录隐式导入 module1.py。但是,在 Python 3 中,此语句会引发错误,需要使用 from 显式导入。 import module1.

星号导入

星号导入(例如 from x import *)仅在 Python 3 的模块级代码中允许。这意味着模块不能使用导入其他模块时使用星号导入。

使用相对值的示例导入

考虑以下 Python 2 代码:

# module1.py
class MyClass:
    def __init__(self):
        print("Hello from MyClass")
# module2.py
from module1 import MyClass

在 Python 3 中,module2.py 必须重写为:

# module2.py
from .module1 import MyClass

这种显式相对导入可确保从相对于 module2 的正确位置导入 MyClass。

以上是Python 3 中的导入语句有何变化?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn