最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python?__all__變量用法示例詳解

 更新時(shí)間:2023年04月03日 09:30:03   作者:小劉學(xué)安卓  
這篇文章主要介紹了Python?__all__變量用法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

        事實(shí)上,當(dāng)我們向文件導(dǎo)入某個(gè)模塊時(shí),導(dǎo)入的是該模塊中那些名稱不以下劃線(單下劃線“_”或者雙下劃線“__”)開頭的變量、函數(shù)和類。因此,如果我們不想模塊文件中的某個(gè)成員被引入到其它文件中使用,可以在其名稱前添加下劃線。
        以前面章節(jié)中創(chuàng)建的 demo.py 模塊文件和 test.py 文件為例(它們位于同一目錄),各自包含的內(nèi)容如下所示:

#demo.py
def say():
    print("人生苦短,我學(xué)Python!")
 
def CLanguage():
    print("腳本之家://www.fzitv.net")
 
def disPython():
    print("Python教程://www.fzitv.net/python")
 
#test.py
from demo import *
say()
CLanguage()
disPython()

執(zhí)行 test.py 文件,輸出結(jié)果為:

人生苦短,我學(xué)Python!
腳本之家://www.fzitv.net
Python教程://www.fzitv.net/python

        在此基礎(chǔ)上,如果 demo.py 模塊中的 disPython() 函數(shù)不想讓其它文件引入,則只需將其名稱改為 _disPython() 或者 __disPython()。修改之后,再次執(zhí)行 test.py,其輸出結(jié)果為:

人生苦短,我學(xué)Python!
腳本之家://www.fzitv.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() 函數(shù)。

Python模塊__all__變量

        除此之外,還可以借助模塊提供的 __all__ 變量,該變量的值是一個(gè)列表,存儲(chǔ)的是當(dāng)前模塊中一些成員(變量、函數(shù)或者類)的名稱。通過在模塊文件中設(shè)置 __all__ 變量,當(dāng)其它文件以“from 模塊名 import *”的形式導(dǎo)入該模塊時(shí),該文件中只能使用 __all__ 列表中指定的成員。

也就是說,只有以“from 模塊名 import *”形式導(dǎo)入的模塊,當(dāng)該模塊設(shè)有 __all__ 變量時(shí),只能導(dǎo)入該變量指定的成員,未指定的成員是無法導(dǎo)入的。

舉個(gè)例子,修改 demo.py 模塊文件中的代碼:

def say():
    print("人生苦短,我學(xué)Python!")
 
def CLanguage():
    print("腳本之家://www.fzitv.net")
 
def disPython():
    print("Python教程://www.fzitv.net/python")
 
__all__ = ["say","CLanguage"]

可見,__all__ 變量只包含 say() 和 CLanguage() 的函數(shù)名,不包含 disPython() 函數(shù)的名稱。此時(shí)直接執(zhí)行  test.py 文件,其執(zhí)行結(jié)果為:

人生苦短,我學(xué)Python!
腳本之家://www.fzitv.net
Traceback (most recent call last):
  File "C:/Users/mengma/Desktop/2.py", line 4, in <module>
    disPython()
NameError: name 'disPython' is not defined

        顯然,對(duì)于 test.py 文件來說,demo.py 模塊中的 disPython() 函數(shù)是未引入,這樣調(diào)用是非法的。

        再次聲明,__all__ 變量?jī)H限于在其它文件中以“from 模塊名 import *”的方式引入。也就是說,如果使用以下 2 種方式引入模塊,則 __all__ 變量的設(shè)置是無效的。

1. 以“import 模塊名”的形式導(dǎo)入模塊。通過該方式導(dǎo)入模塊后,總可以通過模塊名前綴(如果為模塊指定了別名,則可以使用模快的別名作為前綴)來調(diào)用模塊內(nèi)的所有成員(除了以下劃線開頭命名的成員)。

仍以 demo.py 模塊文件和 test.py 文件為例,修改它們的代碼如下所示:

#demo.py
def say():
    print("人生苦短,我學(xué)Python!")
 
def CLanguage():
    print("腳本之家://www.fzitv.net")
 
def disPython():
    print("Python教程://www.fzitv.net/python")
 
__all__ = ["say"]
 
 
#test.py
import demo
demo.say()
demo.CLanguage()
demo.disPython()

運(yùn)行 test.py 文件,其輸出結(jié)果為:

人生苦短,我學(xué)Python!
C語言中文網(wǎng)://www.fzitv.net
Python教程://www.fzitv.net/python

        可以看到,雖然 demo.py 模塊文件中設(shè)置有  __all__ 變量,但是當(dāng)以“import demo”的方式引入后,__all__ 變量將不起作用。

2.  以“from 模塊名 import 成員”的形式直接導(dǎo)入指定成員。使用此方式導(dǎo)入的模塊,__all__ 變量即便設(shè)置,也形同虛設(shè)。

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

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

運(yùn)行 test.py,輸出結(jié)果為:

人生苦短,我學(xué)Python!
腳本之家://www.fzitv.net
Python教程://www.fzitv.net/python

到此這篇關(guān)于Python __all__變量用法的文章就介紹到這了,更多相關(guān)Python __all__變量?jī)?nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python中的3種定義類方法

    python中的3種定義類方法

    這篇文章主要給大家分享得是 python中的3種定義類方法,分別是普通方法、類方法(@classmethod)以及類方法(@classmethod),想了解方法具體實(shí)現(xiàn)的小伙伴可以參考下面文章內(nèi)容哦,希望對(duì)你有所幫助
    2021-11-11
  • TensorFlow 模型載入方法匯總(小結(jié))

    TensorFlow 模型載入方法匯總(小結(jié))

    這篇文章主要介紹了TensorFlow 模型載入方法匯總(小結(jié)),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-06-06
  • Python實(shí)現(xiàn)圖像尺寸和格式轉(zhuǎn)換處理的示例詳解

    Python實(shí)現(xiàn)圖像尺寸和格式轉(zhuǎn)換處理的示例詳解

    這篇文章主要為大家詳細(xì)介紹了如何利用Python實(shí)現(xiàn)圖像尺寸獲取和格式轉(zhuǎn)換處理的功能,文中的示例代碼講解詳細(xì),感興趣的可以了解一下
    2023-04-04
  • Python 利用內(nèi)置set函數(shù)對(duì)字符串和列表進(jìn)行去重的方法

    Python 利用內(nèi)置set函數(shù)對(duì)字符串和列表進(jìn)行去重的方法

    今天小編就為大家分享一篇Python 利用內(nèi)置set函數(shù)對(duì)字符串和列表進(jìn)行去重的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-06-06
  • python基礎(chǔ)之函數(shù)

    python基礎(chǔ)之函數(shù)

    這篇文章主要介紹了python的函數(shù),實(shí)例分析了Python中返回一個(gè)返回值與多個(gè)返回值的方法,需要的朋友可以參考下
    2021-10-10
  • python內(nèi)置堆的具體實(shí)現(xiàn)

    python內(nèi)置堆的具體實(shí)現(xiàn)

    本文主要介紹了python內(nèi)置堆的具體實(shí)現(xiàn),堆的表示方法,從上到下,從左到右存儲(chǔ),與列表十分相似,本文就來介紹一下,感興趣的可以了解一下
    2023-03-03
  • 淺談tensorflow語義分割api的使用(deeplab訓(xùn)練cityscapes)

    淺談tensorflow語義分割api的使用(deeplab訓(xùn)練cityscapes)

    這篇文章主要介紹了淺談tensorflow語義分割api的使用(deeplab訓(xùn)練cityscapes),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-05-05
  • python 如何用 Hypothesis 來自動(dòng)化單元測(cè)試

    python 如何用 Hypothesis 來自動(dòng)化單元測(cè)試

    這篇文章主要介紹了python 如何用 Hypothesis 來自動(dòng)化單元測(cè)試,幫助大家更好的理解和學(xué)習(xí)使用python,感興趣的朋友可以了解下
    2021-03-03
  • Python實(shí)現(xiàn)多元線性回歸的梯度下降法

    Python實(shí)現(xiàn)多元線性回歸的梯度下降法

    梯度下降法的機(jī)器學(xué)習(xí)的重要思想之一,梯度下降法的目標(biāo),是使得代價(jià)函數(shù)最小。本文主要和大家分享的是python實(shí)現(xiàn)多元線性回歸的梯度下降法,感興趣的可以了解一下
    2022-08-08
  • python字符串替換re.sub()方法解析

    python字符串替換re.sub()方法解析

    這篇文章主要介紹了python字符串替換re.sub()方法解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-09-09

最新評(píng)論

河池市| 镇康县| 巧家县| 河西区| 和顺县| 吴堡县| 德保县| 周宁县| 长兴县| 临夏市| 龙口市| 张掖市| 田林县| 明光市| 梁河县| 陈巴尔虎旗| 余庆县| 定南县| 洛川县| 佳木斯市| 左贡县| 泰兴市| 巴南区| 大同市| 监利县| 楚雄市| 江城| 台州市| 儋州市| 铜川市| 于田县| 隆尧县| 吉林省| 界首市| 电白县| 彭水| 通道| 佛学| 津南区| 昌平区| 阿鲁科尔沁旗|