對Python模塊導入時全局變量__all__的作用詳解
Python中一個py文件就是一個模塊,“__all__”變量是一個特殊的變量,可以在py文件中,也可以在包的__init__.py中出現(xiàn)。
1、在普通模塊中使用時,表示一個模塊中允許哪些屬性可以被導入到別的模塊中,
如:全局變量,函數(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()
兩個文件在同一個目錄下。
此時執(zhí)行python main.py時結(jié)果如下:

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

那么在模塊中的__all__變量就是為了限制或者指定能被導入到別的模塊的函數(shù),類,全局變量等,如果指定了那么只能是指定的那些可以被導入,沒有指定默認就是全部可以導入,當然私有屬性應該除外。
2、在包下的__init__.py中
sound/effects/__init__.py中添加__all__ = ["echo", "surround", "reverse"]
那么就會在from sound.effects import *時,包含上面三個模塊。當__init__.py為空時,只是導入這個包,并非導入模塊。
__init__.py中可以執(zhí)行一些初始化內(nèi)容,比如:
from . import test1 導入當前目錄下的test1模塊
from .. import test 導入上一層目錄下的test模塊
因為導入 包時會首先執(zhí)行下__init__.py這個文件
以上這篇對Python模塊導入時全局變量__all__的作用詳解就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Python使用socket_TCP實現(xiàn)小文件下載功能
這篇文章主要介紹了Python使用socket_TCP實現(xiàn)小文件下載功能,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-10-10
使用pandas讀取表格數(shù)據(jù)并進行單行數(shù)據(jù)拼接的詳細教程
這篇文章主要介紹了使用pandas讀取表格數(shù)據(jù)并進行單行數(shù)據(jù)拼接的詳細教程,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2021-03-03

