對(duì)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"]
那么就會(huì)在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í)會(huì)首先執(zhí)行下__init__.py這個(gè)文件
以上這篇對(duì)Python模塊導(dǎo)入時(shí)全局變量__all__的作用詳解就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
淺談Python中用datetime包進(jìn)行對(duì)時(shí)間的一些操作
下面小編就為大家?guī)硪黄獪\談Python中用datetime包進(jìn)行對(duì)時(shí)間的一些操作。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-06-06
Python使用socket_TCP實(shí)現(xiàn)小文件下載功能
這篇文章主要介紹了Python使用socket_TCP實(shí)現(xiàn)小文件下載功能,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-10-10
python自動(dòng)化UI工具發(fā)送QQ消息的實(shí)例
今天小編就為大家分享一篇python自動(dòng)化UI工具發(fā)送QQ消息的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-08-08
Python+tkinter編寫一個(gè)最近很火的強(qiáng)制表白神器
這篇文章主要為大家詳細(xì)介紹了Python如何通過tkinter編寫一個(gè)最近很火的強(qiáng)制表白神器,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起嘗試一下2023-04-04
使用pandas讀取表格數(shù)據(jù)并進(jìn)行單行數(shù)據(jù)拼接的詳細(xì)教程
這篇文章主要介紹了使用pandas讀取表格數(shù)據(jù)并進(jìn)行單行數(shù)據(jù)拼接的詳細(xì)教程,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-03-03

