2

私はPythonの基本的な理解を持っていますが、次の構文を使用してモジュールをインポートすると、_(単一のアンダースコア)で始まる指定されたモジュールで定義された属性をインポートしないことをどこかで読んだことがあります。それがどのように起こっているのか、なぜそうなのか誰か教えてもらえますか?

from module.submodule import *
4

1 に答える 1

6

それは設計によるものです。アンダースコアで始まる変数は、内部使用のみと見なされます (他の言語のプライベートとは異なります)。モジュールで直接アクセスすることはできますが、インポートでは*インポートされません。

インポートに関するドキュメントから:*

これにより、アンダースコア (_) で始まる名前を除くすべての名前がインポートされます。ほとんどの場合、Python プログラマーはこの機能を使用しません。これは、未知の名前のセットをインタープリターに導入し、既に定義したものを隠してしまう可能性があるためです。

これはまた、必要なものを明示的にインポートする方がよい * インポートを使用することはお勧めできません。例外は* import 経由で使用するように設計され__all__たモジュールです。つまり、属性 (モジュールがエクスポートするすべての名前を含むリスト) があります。

于 2013-07-17T10:29:37.947 に答える