對Python模塊導(dǎo)入時(shí)全局變量__all__的作用詳解
Python中一個(gè)py文件就是一個(gè)模塊,“__all__”變量是一個(gè)特殊的變量,可以在py文件中,也可以在包的__init__.py中出現(xiàn)。
1、在普通模塊中使用時(shí),表示一個(gè)模塊中允許哪些屬性可以被導(dǎo)入到別的模塊中,
如:全局變量,函數(shù),類。如下,test1.py和main.py
test1.py
__all__=["test"]
def test():
print('----test-----')
def test1():
print('----test1----')
main.py
from test1 import * def main(): test() #test1() main()
兩個(gè)文件在同一個(gè)目錄下。
此時(shí)執(zhí)行python main.py時(shí)結(jié)果如下:

但是如果放開main.py的注釋后,如下:

那么在模塊中的__all__變量就是為了限制或者指定能被導(dǎo)入到別的模塊的函數(shù),類,全局變量等,如果指定了那么只能是指定的那些可以被導(dǎo)入,沒有指定默認(rèn)就是全部可以導(dǎo)入,當(dāng)然私有屬性應(yīng)該除外。
2、在包下的__init__.py中
sound/effects/__init__.py中添加__all__ = ["echo", "surround", "reverse"]
那么就會在from sound.effects import *時(shí),包含上面三個(gè)模塊。當(dāng)__init__.py為空時(shí),只是導(dǎo)入這個(gè)包,并非導(dǎo)入模塊。
__init__.py中可以執(zhí)行一些初始化內(nèi)容,比如:
from . import test1 導(dǎo)入當(dāng)前目錄下的test1模塊
from .. import test 導(dǎo)入上一層目錄下的test模塊
因?yàn)閷?dǎo)入 包時(shí)會首先執(zhí)行下__init__.py這個(gè)文件
以上這篇對Python模塊導(dǎo)入時(shí)全局變量__all__的作用詳解就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Python 實(shí)現(xiàn)繪制子圖及子圖刻度的變換等問題
這篇文章主要介紹了Python 實(shí)現(xiàn)繪制子圖及子圖刻度的變換等問題,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-05-05
使用Python holidays庫獲取中國節(jié)日的代碼示例
在軟件開發(fā)中,處理節(jié)假日信息是一個(gè)常見需求,尤其是在進(jìn)行日期計(jì)算、日程安排和自動化工作流時(shí),Python 提供了一個(gè)名為??holidays??的庫,它能夠輕松獲取節(jié)假日信息,本文將重點(diǎn)介紹如何使用??holidays??庫獲取中國的節(jié)日,并提供詳細(xì)的代碼示例和應(yīng)用場景2024-07-07
淺談keras中的目標(biāo)函數(shù)和優(yōu)化函數(shù)MSE用法
這篇文章主要介紹了淺談keras中的目標(biāo)函數(shù)和優(yōu)化函數(shù)MSE用法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-06-06
Python?基于TCP?傳輸協(xié)議的網(wǎng)絡(luò)通信實(shí)現(xiàn)方法
網(wǎng)絡(luò)編程指在網(wǎng)絡(luò)環(huán)境中,如何實(shí)現(xiàn)不在同一物理位置中的計(jì)算機(jī)之間進(jìn)行數(shù)據(jù)通信,本文重點(diǎn)給大家介紹Python?基于TCP?傳輸協(xié)議的網(wǎng)絡(luò)通信實(shí)現(xiàn)方法,感興趣的朋友跟隨小編一起看看吧2022-02-02

