0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

python如何通過_X和all隱藏模塊數(shù)據(jù)

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列表內(nèi)變量,用于模塊文件; from pkg import *,只導入all列表內(nèi)模塊,用于包文件init.py;
3 _X和all 只針對from x import * 語句生效。 對非from的import語句無效。

1.2 模塊_X

文件內(nèi)容

pkgmoda.py

import os
print('run:{}'.format(os.path.abspath(__file__)))
s='梯閱線條'
_a='tyxt'
b=9555

from module import * 不復制_X變量

# cmd 執(zhí)行下面命令
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 執(zhí)行下面命令
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

文件內(nèi)容

pkgmodb.py

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

from module import *,只復制all列表內(nèi)變量,用于模塊文件

# cmd 執(zhí)行下面命令
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語句無效,不在列表內(nèi)的變量也會被復制,可訪問。

# cmd 執(zhí)行下面命令
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

文件內(nèi)容

pkg__init__.py

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

from pkg import *,自動導入all列表內(nèi)模塊,用于包文件 init .py;

# cmd 執(zhí)行下面命令
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__ 列表內(nèi)模塊
>>> moda.s
'梯閱線條'
# 非 __all__ 列表內(nèi)模塊不自動導入,不可訪問
>>> 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
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • python
    +關(guān)注

    關(guān)注

    56

    文章

    4797

    瀏覽量

    84787
收藏 人收藏

    評論

    相關(guān)推薦

    【 地平線旭日X3派試用體驗】03. Python串口解析姿態(tài)傳感器

    ,同時會接上鼠標和鍵盤用于人機交互,如上圖所示。 2、姿態(tài)傳感器解析Python串口解析姿態(tài)傳感器數(shù)據(jù)主要用的模塊有serial、time。在windows調(diào)試完成后,修改適配X3派l
    發(fā)表于 09-02 14:13

    用于數(shù)據(jù)科學的python必學模塊之Matplotlib的資料說明

    本文檔的主要內(nèi)容詳細介紹的是用于數(shù)據(jù)科學的python必學模塊之Matplotlib的資料說明。
    發(fā)表于 09-18 08:00 ?14次下載
    用于<b class='flag-5'>數(shù)據(jù)</b>科學的<b class='flag-5'>python</b>必學<b class='flag-5'>模塊</b>之Matplotlib的資料說明

    用于數(shù)據(jù)科學的python必學模塊之Keras的資料說明

    本文檔的主要內(nèi)容詳細介紹的是用于數(shù)據(jù)科學的python必學模塊之Keras的資料說明。
    發(fā)表于 09-18 08:00 ?9次下載

    Python的函數(shù)文件與模塊的程序說明

    “探索Python ” 這一系列的前幾篇文章已為Python 編程新手介紹了幾方面的主題, 包括變量、容器對象和復合語句。本文以這些概念為基礎(chǔ),構(gòu)造一個完整的Python 程序。引入了Pyth
    發(fā)表于 09-10 16:06 ?2次下載
    <b class='flag-5'>Python</b>的函數(shù)文件與<b class='flag-5'>模塊</b>的程序說明

    python包、模塊和庫是什么

    1. 模塊 以 .py 為后綴的文件,我們稱之為 模塊,英文名 Module。 模塊讓你能夠有邏輯地組織你的 Python 代碼段,把相關(guān)的代碼分配到一個
    的頭像 發(fā)表于 03-09 16:47 ?2340次閱讀

    Python-模塊與包

    模塊Python 程序架構(gòu)的一個核心概念
    的頭像 發(fā)表于 02-16 14:55 ?781次閱讀
    <b class='flag-5'>Python</b>-<b class='flag-5'>模塊</b>與包

    解析python模塊搜索路徑和別名as

    描述** python通過模塊搜索路徑找到模塊文件進行導入。
    的頭像 發(fā)表于 02-21 10:53 ?751次閱讀

    python中間模塊重載介紹

    python通過reload重載模塊動態(tài)更新最新代碼。 ## 1.1 reload
    的頭像 發(fā)表于 02-21 11:16 ?554次閱讀

    python模塊屬性及字符串導入模塊介紹

    python可以通過點號或字典,獲取模塊屬性。 已經(jīng)導入的模塊存放在sys.modules字典,通過getattr獲取
    的頭像 發(fā)表于 02-21 11:27 ?749次閱讀

    簡述python模塊import和from及all

    python指定導入目錄路徑,稱為包導入。 通過import和from導入包模塊。 通過**all**指定導入的
    的頭像 發(fā)表于 02-21 14:20 ?1261次閱讀

    淺析python模塊創(chuàng)建和from及import使用

    python模塊通過python程序編寫的.py文件即可創(chuàng)建,通過from及import語句導入模塊
    的頭像 發(fā)表于 02-21 14:44 ?867次閱讀

    通過Python實現(xiàn)PLC數(shù)據(jù)可視化呈現(xiàn)于Web端的方案

    +pyModbusTCP庫實現(xiàn)數(shù)據(jù)采集; M580可擴展BMEP582040 OPC UA模塊,可通過Python+opcua庫實現(xiàn)數(shù)據(jù)
    發(fā)表于 04-20 10:33 ?1次下載
    <b class='flag-5'>通過</b><b class='flag-5'>Python</b>實現(xiàn)PLC<b class='flag-5'>數(shù)據(jù)</b>可視化呈現(xiàn)于Web端的方案

    Python中telnetlib模塊的基本使用

    telnetlib 是 Python 標準庫中的一個模塊,它提供了 Telnet 協(xié)議的客戶端功能。使用 telnetlib 模塊,我們可以在 Python 中編寫腳本來自動化 Tel
    的頭像 發(fā)表于 05-04 14:27 ?8159次閱讀

    yfinance:獲取數(shù)據(jù)Python第三方模塊

    yfinance 是一個使用 Yahoo! 獲取數(shù)據(jù)Python 第三方模塊。它支持獲取最細到1分鐘級的歷史數(shù)據(jù)及股票基本面數(shù)據(jù),是免費
    的頭像 發(fā)表于 10-21 14:32 ?2903次閱讀

    python如何導入模塊

    Python是一種強大的編程語言,它支持模塊化編程,使得開發(fā)者可以將代碼分解為可重用且獨立的模塊。模塊是一個包含函數(shù)、類和變量等定義的文件,我們可以使用import語句將這些
    的頭像 發(fā)表于 11-22 14:46 ?966次閱讀