返回顶部
首页 > 资讯 > 后端开发 > Python >Python __all__变量用法示例详解
  • 401
分享到

Python __all__变量用法示例详解

Python __all__变量Python__all__ 2023-05-14 08:05:35 401人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

目录python模块__all__变量        事实上,当我们向文件导入某个模块时,导入的是该模

        事实上,当我们向文件导入某个模块时,导入的是该模块中那些名称不以下划线(单下划线“_”或者双下划线“__”)开头的变量、函数和类。因此,如果我们不想模块文件中的某个成员被引入到其它文件中使用,可以在其名称前添加下划线。
        以前面章节中创建的 demo.py 模块文件和 test.py 文件为例(它们位于同一目录),各自包含的内容如下所示:

#demo.py
def say():
    print("人生苦短,我学Python!")
 
def CLanguage():
    print("编程网://www.jb51.net")
 
def disPython():
    print("Python教程://www.jb51.net/python")
 
#test.py
from demo import *
say()
CLanguage()
disPython()

执行 test.py 文件,输出结果为:

人生苦短,我学Python!
编程网://www.jb51.net
Python教程://www.jb51.net/python

        在此基础上,如果 demo.py 模块中的 disPython() 函数不想让其它文件引入,则只需将其名称改为 _disPython() 或者 __disPython()。修改之后,再次执行 test.py,其输出结果为:

人生苦短,我学Python!
编程网://www.jb51.net
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 文件中无法使用未引入的 disPython() 函数。

Python模块__all__变量

        除此之外,还可以借助模块提供的 __all__ 变量,该变量的值是一个列表,存储的是当前模块中一些成员(变量、函数或者类)的名称。通过在模块文件中设置 __all__ 变量,当其它文件以“from 模块名 import *”的形式导入该模块时,该文件中只能使用 __all__ 列表中指定的成员

也就是说,只有以“from 模块名 import *”形式导入的模块,当该模块设有 __all__ 变量时,只能导入该变量指定的成员,未指定的成员是无法导入的。

举个例子,修改 demo.py 模块文件中的代码:

def say():
    print("人生苦短,我学Python!")
 
def CLanguage():
    print("编程网://www.jb51.net")
 
def disPython():
    print("Python教程://www.jb51.net/python")
 
__all__ = ["say","CLanguage"]

可见,__all__ 变量只包含 say() 和 CLanguage() 的函数名,不包含 disPython() 函数的名称。此时直接执行  test.py 文件,其执行结果为:

人生苦短,我学Python!
编程网://www.jb51.net
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__ 变量的设置是无效的。

1. 以“import 模块名”的形式导入模块。通过该方式导入模块后,总可以通过模块名前缀(如果为模块指定了别名,则可以使用模快的别名作为前缀)来调用模块内的所有成员(除了以下划线开头命名的成员)。

仍以 demo.py 模块文件和 test.py 文件为例,修改它们的代码如下所示:

#demo.py
def say():
    print("人生苦短,我学Python!")
 
def CLanguage():
    print("编程网://www.jb51.net")
 
def disPython():
    print("Python教程://www.jb51.net/python")
 
__all__ = ["say"]
 
 
#test.py
import demo
demo.say()
demo.CLanguage()
demo.disPython()

运行 test.py 文件,其输出结果为:

人生苦短,我学Python!
C语言中文网://www.jb51.net
Python教程://www.jb51.net/python

        可以看到,虽然 demo.py 模块文件中设置有  __all__ 变量,但是当以“import demo”的方式引入后,__all__ 变量将不起作用。

2.  以“from 模块名 import 成员”的形式直接导入指定成员。使用此方式导入的模块,__all__ 变量即便设置,也形同虚设。

仍以 demo.py 和 test.py 为例,修改 test.py 文件中的代码,如下所示:

from demo import say
from demo import CLanguage
from demo import disPython
 
say()
CLanguage()
disPython()

运行 test.py,输出结果为:

人生苦短,我学Python!
编程网://www.jb51.net
Python教程://www.jb51.net/python

到此这篇关于Python __all__变量用法的文章就介绍到这了,更多相关Python __all__变量内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Python __all__变量用法示例详解

本文链接: https://lsjlt.com/news/202893.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Python __all__变量用法示例详解
    目录Python模块__all__变量        事实上,当我们向文件导入某个模块时,导入的是该模...
    99+
    2023-05-14
    Python __all__变量 Python __all__
  • Python __all__变量怎么使用
    今天小编给大家分享一下Python __all__变量怎么使用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。&nb...
    99+
    2023-07-05
  • 详解shell 变量的高级用法示例
    变量删除和替换 案例:从头开始匹配,将符合最短的数据删除 (#) variable_1="I love you, Do you love me" echo $variable_1 variable_2=${vari...
    99+
    2022-06-04
    shell 变量
  • Python 变量类型实例详解
    目录1.变量赋值2.多个变量赋值3.标准数据类型4.Python 数字5.Python字符串6.Python列表7.ython 元组8..Python 字典9.Python数据类型转...
    99+
    2024-04-02
  • mysql用户变量与set语句示例详解
    1 用户变量介绍 用户变量即用户自己定义的变量,我们可以给用户变量分配值,并且可用在任何可以正常使用标量表达式的地方。 引入用户变量之前我们必须使用set语句或select语句来定义它,然后为它赋一个值,...
    99+
    2022-05-27
    mysql使用set类型 mysql定义变量 mysql 设置变量
  • MySql变量用法详解
    自我介绍 我是IT果果日记 一个普通的技术宅,定期分享技术文章,欢迎点赞、关注和转发,请多关照。 MySql变量主要分为系统变量、用户变量和局部变量,它们的区别是什么?分别有什么作用呢? 下面会一一给大家讲解一下,并结合...
    99+
    2023-09-10
    mysql sql Powered by 金山文档
  • 优雅使用GoFrame共享变量Context示例详解
    目录前言摘要Context是什么?为什么需要Context?Context是如何实现共享变量的?如何使用?一、结构定义介绍二、逻辑封装三、上下文变量注入四、上下文变量使用方法定义Co...
    99+
    2024-04-02
  • go语言的变量定义示例详解
    目录前言定义单个变量定义多个变量定义相同类型的多个变量变量的初始化变量类型的省略var关键字的省略(简短声明)全局变量与局部变量特别的变量名未使用变量的限制常量前言 特别说明: 本文...
    99+
    2022-12-20
    go语言变量定义 go 变量
  • 详解python的变量
    目录1.Python 变量的概述:2.Python 变量的命名3.Python 变量赋值3.1 Python 变量赋值概述3.2 Python 变量的基本赋值格式3.3 Python...
    99+
    2024-04-02
  • 详解Python变量与注释高级用法
    目录Python变量与注释高级用法1.概述2.变量2.1.变量解包2.2.给变量注明类型2.3.变量命名原则3.注释3.1.注释类型3.2.错误使用注释案例Python变量与注释高级...
    99+
    2024-04-02
  • Shell PATH变量用法详解
    前面章节我们说过,程序脚本要想在 linux 中运行,需要使用绝对路径或相对路径指定这个脚本所在的位置。但是为什么系统命令都没有指定路径而是直接执行的?比如,ls 命令并没有输入"/bin/ls"来执行,而是直接执行"l...
    99+
    2022-06-04
    Shell PATH变量 Shell $PATH变量
  • Python中的Super用法示例详解
    目录Python Super用法附:super的典型用法总结 Python Super用法 这篇文章我们来介绍一下 super,我相信大部分的人使用 super 都是使用这...
    99+
    2024-04-02
  • Python变量教程私有变量详解
    目录前言重整及其工作原理_单前导下划线__双前导下划线双前导和双尾下划线前言 Python 中,不存在只能在对象内部访问的“私有”实例变量。然而,大多数 Py...
    99+
    2024-04-02
  • Python中可变变量与不可变变量详解
    目录一 、常见的变量分类1、变量的创建二、变量分类1、、常见的不可变变量2、常见的可变变量三、拷贝的差别四、参数传递的差别前言: C++不同于Python的显著特点,就是有指针和引用...
    99+
    2024-04-02
  • Python变量的作用域详解
    目录总结每个变量都有自己的作用域,在作用域外使用该变量非法 函数体内的变量为函数的局部变量,在函数体外不可使用 >>>def f(): x=5 >&...
    99+
    2024-04-02
  • 详解python中的变量
    目录变量变量的分类:赋值变量的命名规则:总结变量变量的分类:赋值变量的命名规则:总结变量 一个由程序员或用户定义的量且在程序中可能发生改变的量 #变量是所有程序的起点 变量的分类: ...
    99+
    2024-04-02
  • 【Python】Python 包 ② ( 自定义 Python 包 | 导入并调用自定义 Python 包 | `__init__.py` 定义 `__all__` 变量 )
    文章目录 一、自定义 Python 包1、PyCharm 中创建 Python 包2、自定义 Module 模块代码3、`__init__.py` 代码 二、导入并调用自定义 Python...
    99+
    2023-10-23
    python 开发语言 自定义包 导入自定义包 __init__.py 原力计划
  • Python Flask JinJa2 语法使用示例详解
    目录一、概述二、JinJa2 语法介绍与示例讲解1)变量2)控制结构3)循环结构4)宏5)过滤器6)继承7)包含一、概述 Flask是一个轻量级的Python Web框架,支持Ji...
    99+
    2023-03-19
    Python Flask JinJa2 语法 Python Flask
  • Python环境变量的示例分析
    这篇文章将为大家详细讲解有关Python环境变量的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Python环境变量具有一个强大灵活的工业级的记录模块,该模块能够在不同的层次把消息记录到任意位置,...
    99+
    2023-06-17
  • Python中变量的作用域详解
    目录1、作用于的概念2、局部变量3、全局变量4、变量的查找5、作用域中可变数据类型变量6、多函数程序执行流程总结1、作用于的概念 变量作用域指的是变量生效的范围,在Python中一共...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作