Python中__all__变量的作用与使用详解

周予安
周予安
发布时间:2026-10-13| 5人浏览过
原创

本文详细解析Python中__all__全局变量的作用。在普通模块中,__all__用于指定允许通过from...import *导入的属性(如函数、类、全局变量);若未定义,则默认全部可导入(私有属性除外)。在包的__init__.py中,__all__控制from package import *的行为,明确列出需暴露的子模块。通过代码示例说明其如何限制或指定导入范围,并简述__init__.py中的初始化逻辑。

在Python中,每个.py文件被视为一个独立的模块。__all__是一个特殊的列表变量,它既可以定义在普通的.py模块文件中,也可以出现在包的__init__.py文件里。

1、在普通模块中使用__all__时,它的作用是明确指定该模块中哪些属性(如全局变量、函数或类)允许被其他模块通过通配符导入。

例如,我们可以参考test1.py和main.py这两个文件的具体实现。

test1.py

__all__=["test"]
def test():
 print('----test-----')
 
def test1():
 print('----test1----')

main.py

from test1 import *
 
 
def main():
 test()
 
 #test1()
 
main()

假设这两个文件位于同一个目录下。

此时,若直接执行python main.py,其运行结果如下:

然而,如果取消main.py中的注释(即调用被__all__排除的函数),情况会发生变化,具体代码如下:

由此可见,模块中的__all__变量主要用于限制或指定能够被其他模块通过from...import *语句导入的内容,包括函数、类和全局变量。如果定义了__all__,则只有列表中包含的名称可以被导入;若未定义__all__,则默认模块中所有非私有(即不以单下划线开头)的名称均可被导入。

2、在包的__init__.py文件中使用__all__

例如,在sound/effects/__init__.py文件中添加__all__ = ["echo", "surround", "reverse"]。

这样,当执行from sound.effects import *时,只会导入__all__列表中指定的这三个子模块。需要注意的是,如果__init__.py文件为空,执行from sound.effects import *仅会导入sound.effects这个包本身,而不会自动导入其下的子模块。

此外,__init__.py文件还可以用于执行一些初始化操作,例如:

使用from . import test1可以导入当前目录下的test1模块。

使用from .. import test可以导入上一层目录下的test模块。

这是因为在导入包时,Python解释器会首先执行__init__.py文件中的代码。

以上关于Python模块导入时__all__全局变量作用的详解内容到此结束,希望能为读者提供有价值的参考,并欢迎大家继续支持本站获取更多技术资讯。

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。