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