這位大佬已經寫得很好了:
python中乙個py檔案就是乙個模組,__all__
變數是乙個特殊的變數,可以在py檔案中,也可以在包的__init__.py
**現。
1、在普通模組中使用時,表示乙個模組中允許哪些屬性可以被匯入到別的模組中,
如:全域性變數、函式和類等。如下,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(
)
兩個檔案在同乙個目錄下。
此時執行python main.py時結果如下:
但是如果放開main.py的注釋後,如下:
2、在包下的__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
這個檔案
python 模組及全域性變數
test sa.py coding utf 8 user defined parameters global a a 5def change a global a 模組內使用a,必須使用global變數 a 3 print local a str a def print a global a 模組內...
Nodejs fs模組 全域性變數
fs模組提供了用於與檔案進行互動相關方法 const fs require fs 寫入資料 fs.writefile 檔案,資料,err 讀取檔案中資料 fs.readfile 檔案 utf8 err,data 檢查檔案是否存在 返回 true false fs.existssync path 獲取...
python 全域性變數
應該盡量避免使用全域性變數。不同的模組都可以自由的訪問全域性變數,可能會導致全域性變數的不可預知性。對全域性變數,如果程式設計師甲修改了 a的值,程式設計師乙同時也要使用 a,這時可能導致程式中的錯誤。這種錯誤是很難發現和更正的。全域性變數降低了函式或模組之間的通用性,不同的函式或模組都要依賴於全域...