0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

python如何通过_X和all隐藏模块数据

jf_78858299 来源:梯阅线条小梯子 作者:小梯子 2023-02-21 11:29 次阅读

1.1 描述

python的_X指出不被复制的变量,all指出要复制的变量。

NO 变量 描述
1 _X from module import*,不复制X变量(单下划线开头的变量)
2 all from module import *,只复制all列表内变量,用于模块文件; from pkg import *,只导入all列表内模块,用于包文件init.py;
3 _X和all 只针对from x import * 语句生效。 对非from的import语句无效。

1.2 模块_X

文件内容

pkgmoda.py

import os
print('run:{}'.format(os.path.abspath(__file__)))
s='梯阅线条'
_a='tyxt'
b=9555

from module import * 不复制_X变量

# cmd 执行下面命令
C:UsersAdministrator>e:&cd E:documentsF盘
E:documentsF盘>d:python3python
Python 3.7.8 (tags/v3.7.8:4b47a5b6ba, Jun 28 2020, 07:55:33) [MSC v.1916 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
# from module import * 不复制_X变量
>>> from pkg.moda import *
run:E:documentsF盘pkg__init__.py
run:E:documentsF盘pkgmoda.py
# 复制非单下划线开头变量,可访问
>>> s
'梯阅线条'
>>> b
9555
# 不复制单下划线开头变量,不可访问
>>> _a
Traceback (most recent call last):
 File "", line 1, in 
NameError: name '_a' is not defined

单下划线开头变量,对非from的import语句无效,会被复制。

# cmd 执行下面命令
E:documentsF盘>d:python3python
Python 3.7.8 (tags/v3.7.8:4b47a5b6ba, Jun 28 2020, 07:55:33) [MSC v.1916 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
# _X对import 语句无效
>>> import pkg.moda
run:E:documentsF盘pkg__init__.py
run:E:documentsF盘pkgmoda.py
>>> pkg.moda.s
'梯阅线条'
>>> pkg.moda.b
9555
# 可访问_a
>>> pkg.moda._a
'tyxt'

1.3 模块all

文件内容

pkgmodb.py

import os
__all__=['s','b',]
print('run:{}'.format(os.path.abspath(__file__)))
s='梯阅线条'
a='tyxt'
b=9555

from module import *,只复制all列表内变量,用于模块文件

# cmd 执行下面命令
E:documentsF盘>d:python3python
Python 3.7.8 (tags/v3.7.8:4b47a5b6ba, Jun 28 2020, 07:55:33) [MSC v.1916 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> from pkg.modb import *
run:E:documentsF盘pkg__init__.py
run:E:documentsF盘pkgmodb.py
# 在__all__列表的变量,可访问
>>> s
'梯阅线条'
>>> a
# 不在__all__列表的变量,不可访问
Traceback (most recent call last):
 File "", line 1, in 
NameError: name 'a' is not defined
>>> b
9555

all列表,对非from的import语句无效,不在列表内的变量也会被复制,可访问。

# cmd 执行下面命令
E:documentsF盘>d:python3python
Python 3.7.8 (tags/v3.7.8:4b47a5b6ba, Jun 28 2020, 07:55:33) [MSC v.1916 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import pkg.modb
run:E:documentsF盘pkg__init__.py
run:E:documentsF盘pkgmodb.py
>>> pkg.modb.s
'梯阅线条'
# 不在__all__列表的变量,也可访问
>>> pkg.modb.a
'tyxt'
>>> pkg.modb.b
9555

1.4 包all

文件内容

pkg__init__.py

import os
__all__=['moda',]
print('run:{}'.format(os.path.abspath(__file__)))

from pkg import *,自动导入all列表内模块,用于包文件 init .py;

# cmd 执行下面命令
E:documentsF盘>d:python3python
Python 3.7.8 (tags/v3.7.8:4b47a5b6ba, Jun 28 2020, 07:55:33) [MSC v.1916 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> from pkg import *
run:E:documentsF盘pkg__init__.py
run:E:documentsF盘pkgmoda.py
# 自动导入 __all__ 列表内模块
>>> moda.s
'梯阅线条'
# 非 __all__ 列表内模块不自动导入,不可访问
>>> modb.s
Traceback (most recent call last):
 File "", line 1, in 
NameError: name 'modb' is not defined
>>> modc.s
Traceback (most recent call last):
 File "", line 1, in 
NameError: name 'modc' is not defined
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • python
    +关注

    关注

    53

    文章

    4753

    浏览量

    84078
收藏 人收藏

    评论

    相关推荐

    【 地平线旭日X3派试用体验】03. Python串口解析姿态传感器

    ,同时会接上鼠标和键盘用于人机交互,如上图所示。 2、姿态传感器解析Python串口解析姿态传感器数据主要用的模块有serial、time。在windows调试完成后,修改适配X3派l
    发表于 09-02 14:13

    用于数据科学的python必学模块之Matplotlib的资料说明

    本文档的主要内容详细介绍的是用于数据科学的python必学模块之Matplotlib的资料说明。
    发表于 09-18 08:00 14次下载
    用于<b class='flag-5'>数据</b>科学的<b class='flag-5'>python</b>必学<b class='flag-5'>模块</b>之Matplotlib的资料说明

    用于数据科学的python必学模块之Keras的资料说明

    本文档的主要内容详细介绍的是用于数据科学的python必学模块之Keras的资料说明。
    发表于 09-18 08:00 9次下载

    Python的函数文件与模块的程序说明

    “探索Python ” 这一系列的前几篇文章已为Python 编程新手介绍了几方面的主题, 包括变量、容器对象和复合语句。本文以这些概念为基础,构造一个完整的Python 程序。引入了Pyth
    发表于 09-10 16:06 2次下载
    <b class='flag-5'>Python</b>的函数文件与<b class='flag-5'>模块</b>的程序说明

    python包、模块和库是什么

    1. 模块 以 .py 为后缀的文件,我们称之为 模块,英文名 Module。 模块让你能够有逻辑地组织你的 Python 代码段,把相关的代码分配到一个
    的头像 发表于 03-09 16:47 2237次阅读

    Python-模块与包

    模块Python 程序架构的一个核心概念
    的头像 发表于 02-16 14:55 692次阅读
    <b class='flag-5'>Python</b>-<b class='flag-5'>模块</b>与包

    解析python模块搜索路径和别名as

    描述** python通过模块搜索路径找到模块文件进行导入。
    的头像 发表于 02-21 10:53 673次阅读

    python中间模块重载介绍

    python通过reload重载模块动态更新最新代码。 ## 1.1 reload
    的头像 发表于 02-21 11:16 476次阅读

    python模块属性及字符串导入模块介绍

    python可以通过点号或字典,获取模块属性。 已经导入的模块存放在sys.modules字典,通过getattr获取
    的头像 发表于 02-21 11:27 670次阅读

    简述python模块import和from及all

    python指定导入目录路径,称为包导入。 通过import和from导入包模块通过**all**指定导入的
    的头像 发表于 02-21 14:20 1153次阅读

    浅析python模块创建和from及import使用

    python模块通过python程序编写的.py文件即可创建,通过from及import语句导入模块
    的头像 发表于 02-21 14:44 730次阅读

    通过Python实现PLC数据可视化呈现于Web端的方案

    +pyModbusTCP库实现数据采集; M580可扩展BMEP582040 OPC UA模块,可通过Python+opcua库实现数据
    发表于 04-20 10:33 1次下载
    <b class='flag-5'>通过</b><b class='flag-5'>Python</b>实现PLC<b class='flag-5'>数据</b>可视化呈现于Web端的方案

    Python中telnetlib模块的基本使用

    telnetlib 是 Python 标准库中的一个模块,它提供了 Telnet 协议的客户端功能。使用 telnetlib 模块,我们可以在 Python 中编写脚本来自动化 Tel
    的头像 发表于 05-04 14:27 7411次阅读

    yfinance:获取数据Python第三方模块

    yfinance 是一个使用 Yahoo! 获取数据Python 第三方模块。它支持获取最细到1分钟级的历史数据及股票基本面数据,是免费
    的头像 发表于 10-21 14:32 1976次阅读

    python如何导入模块

    Python是一种强大的编程语言,它支持模块化编程,使得开发者可以将代码分解为可重用且独立的模块模块是一个包含函数、类和变量等定义的文件,我们可以使用import语句将这些
    的头像 发表于 11-22 14:46 798次阅读