PEP-404 对 Python 导入语句的影响
Python 增强提案 (PEP) 404 对 Python 3 中的导入语句引入了重大更改,增强模块导入的清晰度和组织性。
什么是相对导入吗?
相对导入是指从相对于当前模块或包的位置导入模块。在 Python 2 中,允许隐式相对导入,但这在 Python 3 中受到限制。
相对导入的更改
PEP-404 强制执行显式相对导入。现在必须使用前导 . (点)或 ..(双点)指定相对于当前模块目录的路径。例如:
from .mymodule import MyFunction # Import from within the current package from ..otherpackage import OtherClass # Import from one level up in the directory structure
星型导入的限制
星型导入(从包中导入所有子模块和属性)现在仅允许在模块级别代码中使用。以前,函数和类定义中允许星号导入,但为了防止命名空间污染和意外行为,已禁止这样做。
示例:
Python 2 代码:
# Function-level star import def my_function(): from mymodule import * do_something_with(MyAttribute) # Class-level star import class MyClass: def __init__(self): from otherpackage import * self.other_variable = OtherVariable
Python 3 代码:
# Module-level star import import mymodule do_something_with(mymodule.MyAttribute) # Explicit import within function def my_function(): from mymodule import MyAttribute do_something_with(MyAttribute) # Explicit import within class class MyClass: def __init__(self): from otherpackage import OtherVariable self.other_variable = OtherVariable
通过强制执行显式导入和限制星号导入,Python 3 旨在提高导入清晰度,减少命名空间冲突,并促进更加结构化和可维护的代码库。
以上是PEP 404 如何改变 Python 的导入语句?的详细内容。更多信息请关注PHP中文网其他相关文章!