Python中一個py文件就是一個模塊,「__all__」變量是一個特殊的變量,能夠在py文件中,也能夠在包的__init__.py中出現。
一、在普通模塊中使用時,表示一個模塊中容許哪些屬性能夠被導入到別的模塊中,
如:全局變量,函數,類。以下,test1.py和main.py
test1.pypython
__all__=["test"] def test(): print('----test-----') def test1(): print('----test1----')
main.py函數
from test1 import * def main(): test() #test1() main()
兩個文件在同一個目錄下。
此時執行python main.py時結果以下:
可是若是放開main.py的註釋後,以下:
那麼在模塊中的__all__變量就是爲了限制或者指定能被導入到別的模塊的函數,類,全局變量等,若是指定了那麼只能是指定的那些能夠被導入,沒有指定默認就是所有能夠導入,固然私有屬性應該除外。
二、在包下的__init__.py中
sound/effects/__init__.py中添加__all__ = ["echo", "surround", "reverse"]
那麼就會在from sound.effects import *時,包含上面三個模塊。當__init__.py爲空時,只是導入這個包,並不是導入模塊。
__init__.py中能夠執行一些初始化內容,好比:
from . import test1 導入當前目錄下的test1模塊
from .. import test 導入上一層目錄下的test模塊
由於導入 包時會首先執行下__init__.py這個文件
原文:https://blog.csdn.net/chuan_day/article/details/79694319 .net