首頁 >後端開發 >Python教學 >Python的`__all__`如何透過`from import *`控制模組導入?

Python的`__all__`如何透過`from import *`控制模組導入?

Patricia Arquette
Patricia Arquette原創
2024-12-12 18:00:25841瀏覽

How Does Python's `__all__` Control Module Imports with `from  import *`?

揭示「__all__」在Python中的作用

「__init__.py」檔案中的「__all__」列表起著關鍵作用使用“from import *」時控制導出哪些符號module.

具體來說,「__all__」定義了一個字串列表,這些字串表示模組中使用「import *」通配符語法時可存取的符號。例如,考慮名為「foo.py」的模組中的以下程式碼:

__all__ = ['bar', 'baz']

waz = 5
bar = 10
def baz(): return 'baz'

在此範例中,符號「bar」和「baz」是使用「__all__」明確匯出的。因此,當您使用“from foo import *”導入“foo”模組時,只有這兩個符號可用。所有其他符號,例如“waz”,都將被隱藏。

from foo import *

print(bar)
print(baz())

# Attempting to access "waz" will raise an exception.
print(waz)

如果註解掉「__all__」列表,則預設導入行為生效,其中所有不以下劃線開頭的符號是進口的。在這種情況下,導入語句將會成功,並且「waz」也將可以存取。

# Comment out __all__

from foo import *

print(bar)
print(baz())
print(waz)

需要注意的是,「__all__」只影響「from import *」語法。 「__all__」中未提及的成員仍然可以透過使用特定的導入語句從模組外部訪問,例如「from import 」。

以上是Python的`__all__`如何透過`from import *`控制模組導入?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn