Python裡__all__變數的作用
在Python的模組裡,要想像C語言編寫的DLL動態連線庫一樣,可以提供函式的介面名稱,就需要使用__all__變數了。通過這個特性,可以控制哪些函式被外面引用,哪些不能看見。這對一個大工程的軟體來說是至關重要,因為沒有控制的暴露,會導致別的軟體開發人員亂用,從而讓軟體呼叫之間出現隱形的問題。比如只給出一個介面的元件,肯定比給出一千個介面的元件使用起來簡單。因此,在一個團隊的開發配合中,一定要明確這樣一條準則:能少不能多,夠用就好。把無關重要的介面暴露出來,就會導致更多的問題。
__all__ = ['test1']
def test1():
print("-----test1-----")
def test2():
print("-----test2-----")
在這段程式碼裡,只暴露了test1介面,而test2介面看不到。在模組的一開始定義 __all__ 變數,import該模組後,只能找到 __all__中存在的變數或者函式,其他的不能呼叫。
不像 C或者 Java,Python 沒有語言原生的可見性控制,而是靠一套需要大家自覺遵守的”約定“下工作。比如下劃線開頭的應該對外部不可見。同樣,__all__ 也是對於模組公開介面的一種約定,比起下劃線,__all__ 提供了暴露介面用的”白名單“。一些不以下劃線開頭的變數(比如從其他地方 import 到當前模組的成
相關文章
- python變數與變數作用域Python變數
- Python 函式和變數作用域Python函式變數
- 變數作用域變數
- 『無為則無心』Python函式 — 30、Python變數的作用域Python函式變數
- java中變數的作用域Java變數
- JavaScript 變數的作用域鏈JavaScript變數
- JS變數作用域JS變數
- SCSS 變數作用域CSS變數
- Go語言中的變數作用域Go變數
- 現代 JavaScript 的變數作用域JavaScript變數
- 基礎 變數的作用範圍變數
- Shell變數的作用域問題變數
- C# 變數作用域C#變數
- Python入門(十八):變數作用域與巢狀函式Python變數巢狀函式
- Go 中的動態作用域變數Go變數
- javascript中的作用域(全域性變數和區域性變數)JavaScript變數
- 徹底理解Linux的DISPLAY變數的作用Linux變數
- 變數物件與作用域鏈變數物件
- JavaScript之變數及作用域JavaScript變數
- JavaScript中變數和作用域JavaScript變數
- Django裡URL配置中name引數的作用Django
- Python零基礎學習筆記(二十六)——變數的作用域Python筆記變數
- golang變數作用域問題-避免使用全域性變數Golang變數
- PHP 變數的四大作用域PHP變數
- CSS變數的作用域和預設值CSS變數
- [20221130]PLSQL的變數作用範圍(linux).txtSQL變數Linux
- Python培訓教程分享:Python模組如何匯入__all__屬性?Python
- Python變數Python變數
- Python - 變數Python變數
- Python 3 學習筆記之——變數作用域、模組和包Python筆記變數
- Day08-常量、變數、作用域變數
- 變數、作用域與記憶體變數記憶體
- 11-程式碼塊和變數的作用域變數
- 微課|中學生可以這樣學Python(6.3節):變數作用域Python變數
- Python中類變數、成員變數、區域性變數的區別Python變數
- ES6 變數作用域總結變數
- Java基礎06:變數、常量、作用域Java變數
- 語法1-變數、常量、作用域變數