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

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

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

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

jf_78858299 ? 來(lái)源:梯閱線條小梯子 ? 作者:小梯子 ? 2023-02-21 11:29 ? 次閱讀

1.1 描述

python的_X指出不被復(fù)制的變量,all指出要復(fù)制的變量。

NO 變量 描述
1 _X from module import*,不復(fù)制X變量(單下劃線開(kāi)頭的變量)
2 all from module import *,只復(fù)制all列表內(nèi)變量,用于模塊文件; from pkg import *,只導(dǎo)入all列表內(nèi)模塊,用于包文件init.py;
3 _X和all 只針對(duì)from x import * 語(yǔ)句生效。 對(duì)非from的import語(yǔ)句無(wú)效。

1.2 模塊_X

文件內(nèi)容

pkgmoda.py

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

from module import * 不復(fù)制_X變量

# cmd 執(zhí)行下面命令
C:UsersAdministrator>e:&cd E:documentsF盤(pán)
E:documentsF盤(pán)>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 * 不復(fù)制_X變量
>>> from pkg.moda import *
run:E:documentsF盤(pán)pkg__init__.py
run:E:documentsF盤(pán)pkgmoda.py
# 復(fù)制非單下劃線開(kāi)頭變量,可訪問(wèn)
>>> s
'梯閱線條'
>>> b
9555
# 不復(fù)制單下劃線開(kāi)頭變量,不可訪問(wèn)
>>> _a
Traceback (most recent call last):
 File "", line 1, in 
NameError: name '_a' is not defined

單下劃線開(kāi)頭變量,對(duì)非from的import語(yǔ)句無(wú)效,會(huì)被復(fù)制。

# cmd 執(zhí)行下面命令
E:documentsF盤(pán)>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對(duì)import 語(yǔ)句無(wú)效
>>> import pkg.moda
run:E:documentsF盤(pán)pkg__init__.py
run:E:documentsF盤(pán)pkgmoda.py
>>> pkg.moda.s
'梯閱線條'
>>> pkg.moda.b
9555
# 可訪問(wèn)_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 *,只復(fù)制all列表內(nèi)變量,用于模塊文件

# cmd 執(zhí)行下面命令
E:documentsF盤(pán)>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盤(pán)pkg__init__.py
run:E:documentsF盤(pán)pkgmodb.py
# 在__all__列表的變量,可訪問(wèn)
>>> s
'梯閱線條'
>>> a
# 不在__all__列表的變量,不可訪問(wèn)
Traceback (most recent call last):
 File "", line 1, in 
NameError: name 'a' is not defined
>>> b
9555

all列表,對(duì)非from的import語(yǔ)句無(wú)效,不在列表內(nèi)的變量也會(huì)被復(fù)制,可訪問(wèn)。

# cmd 執(zhí)行下面命令
E:documentsF盤(pán)>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盤(pán)pkg__init__.py
run:E:documentsF盤(pán)pkgmodb.py
>>> pkg.modb.s
'梯閱線條'
# 不在__all__列表的變量,也可訪問(wèn)
>>> 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 *,自動(dòng)導(dǎo)入all列表內(nèi)模塊,用于包文件 init .py;

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

    關(guān)注

    53

    文章

    4753

    瀏覽量

    84083
收藏 人收藏

    評(píng)論

    相關(guān)推薦

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

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

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

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

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

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

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

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

    python包、模塊和庫(kù)是什么

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

    Python-模塊與包

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

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

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

    python中間模塊重載介紹

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

    python模塊屬性及字符串導(dǎo)入模塊介紹

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

    簡(jiǎn)述python模塊import和from及all

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

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

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

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

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

    Python中telnetlib模塊的基本使用

    telnetlib 是 Python 標(biāo)準(zhǔn)庫(kù)中的一個(gè)模塊,它提供了 Telnet 協(xié)議的客戶(hù)端功能。使用 telnetlib 模塊,我們可以在 Python 中編寫(xiě)腳本來(lái)自動(dòng)化 Tel
    的頭像 發(fā)表于 05-04 14:27 ?7421次閱讀

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

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

    python如何導(dǎo)入模塊

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