Python で __all__ はどういう意味ですか? 質問する

Python で __all__ はどういう意味ですか? 質問する

ファイル__all__内に表示されます。これは何をするのですか?__init__.py

ベストアンサー1

がいつ使用されるかはリンクされていますが、ここでは明示的には言及されていません__all__。これは、モジュールで が使用されるときにモジュール内のどのシンボルがエクスポートされるかを定義する文字列のリストですfrom <module> import *

たとえば、 内の次のコードは、foo.pyシンボルbarとを明示的にエクスポートしますbaz

__all__ = ['bar', 'baz']

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

これらのシンボルは次のようにインポートできます。

from foo import *

print(bar)
print(baz)

# The following will trigger an exception, as "waz" is not exported by the module
print(waz)

上記がコメントアウトされている場合、 のデフォルトの動作では、指定された名前空間からアンダースコアで始まらないすべてのシンボルをインポートする__all__ため、このコードは完了まで実行されます。import *

参照:https://docs.python.org/tutorial/modules.html#パッケージからのインポート

注意: __all__は動作にのみ影響しますfrom <module> import *。 で言及されていないメンバーは__all__モジュールの外部からアクセス可能であり、 を使用してインポートできますfrom <module> import <member>

おすすめ記事