ホームページ > バックエンド開発 > Python チュートリアル > Python の `__all__` 制御モジュールはどのように `from import *` でインポートしますか?

Python の `__all__` 制御モジュールはどのように `from import *` でインポートしますか?

Patricia Arquette
リリース: 2024-12-12 18:00:25
オリジナル
841 人が閲覧しました

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

Python における "__all__" の役割を明らかにする

"__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」モジュールをインポートすると、これら 2 つのシンボルのみが使用可能になります。 「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 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート