Python - __all__ 变量
2021/10/12 17:17:02
本文主要是介绍Python - __all__ 变量,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
import *
- 当我们向文件导入某个模块时,导入的是该模块中那些名称不以下划线(单下划线 _ 或者双下划线 __ )开头的变量、函数和类
- 因此,如果不想模块文件中的某个对象被引入到其它文件中使用,可以在其名称前添加下划线
- 下面就来讲下 import * 的栗子
demo.py
def say(): print("人生苦短,我学Python!") def disPython(): print("小菠萝教程:https://www.cnblogs.com/poloyy/")
test.py
from demo import * say() disPython()
执行结果
人生苦短,我学Python! 小菠萝教程:https://www.cnblogs.com/poloyy/
如果对象不想被引入呢
如果 demo.py 模块中的 disPython() 函数不想让其它文件引入,则只需将其名称改为 _disPython() 或者 __disPython()
再次执行 test.py,输出结果
人生苦短,我学Python! Traceback (most recent call last): File "C:/Users/polo/Desktop/2.py", line 4, in <module> disPython() NameError: name 'disPython' is not defined
test.py 文件中无法使用未引入的 disPython() 函数
Python 模块 __all__ 变量
- 模块提供的 __all__ 变量,该变量的值是一个列表,存储的是当前模块中一些对象成员(变量、函数或者类)的名称(字符串格式)
- 通过在模块文件中设置 __all__ 变量,当其它文件以 from 模块名 import * 的形式导入该模块时,该文件中只能使用 __all__ 列表中指定的对象成员,未指定的成员是无法导入的
demo.py
def say(): print("人生苦短,我学Python!") def disPython(): print("小菠萝教程:https://www.cnblogs.com/poloyy/") __all__ = ["say"]
__all__ 变量只包含 say()的函数名,不包含 disPython() 函数的名称
test.py
from demo import * say() disPython()
运行 test.py
人生苦短,我学Python! Traceback (most recent call last): File "C:/Users/mengma/Desktop/2.py", line 4, in <module> disPython() NameError: name 'disPython' is not defined
- 对于 test.py 来说,demo.py 模块中的 disPython() 函数是未引入,这样调用是非法的
- 重点:__all__ 变量仅限于在其它文件中以 from 模块名 import * 的方式引入
使用以下 2 种方式引入模块,__all__ 变量是无效的
方式一
import 模块名 的形式导入模块,通过该方式导入模块后,总可以通过模块名前缀(如果为模块指定了别名,则可以使用模快的别名作为前缀)来调用模块内的所有成员(除了以下划线开头命名的成员)
demo.py
def say(): print("人生苦短,我学Python!") def disPython(): print("小菠萝教程:https://www.cnblogs.com/poloyy/") __all__ = ["say"]
test.py
import demo demo.say() demo.disPython()
运行 test.py
人生苦短,我学Python! 小菠萝教程:https://www.cnblogs.com/poloyy/
虽然 demo.py 模块中设置有 __all__ 变量,但是当以 import demo 的方式引入后,__all__ 变量将不起作用
方式二
from 模块名 import 对象成员 的形式直接导入指定成员,使用此方式导入的模块,__all__ 变量即便设置,也不起作用
demo.py
仍然是上面的 demo 代码
test.py
from demo import say from demo import disPython say() disPython()
运行 test.py
人生苦短,我学Python! 小菠萝教程:https://www.cnblogs.com/poloyy/
这篇关于Python - __all__ 变量的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-26Python基础编程
- 2024-11-25Python编程基础:变量与类型
- 2024-11-25Python编程基础与实践
- 2024-11-24Python编程基础详解
- 2024-11-21Python编程基础教程
- 2024-11-20Python编程基础与实践
- 2024-11-20Python编程基础与高级应用
- 2024-11-19Python 基础编程教程
- 2024-11-19Python基础入门教程
- 2024-11-17在FastAPI项目中添加一个生产级别的数据库——本地环境搭建指南