2017-06-04 3 views
0

「から」を介してインポートする私はあなたが例えばfrom てのpythonのモジュールをインポートしてもなぜモジュールの名前ではありませんアクセス

from b import x 

全体のモジュールがロードされていることを観察しました。それはsys.modules辞書に見ることができます。だからなぜモジュールの名前bは私たちのプログラムにアクセスできません。私は何が欠けていますか?

メイン(トップレベル)ファイルの名前空間にモジュール名がないようです。

しかし、私はメインファイルの名前空間を見ることができないので、これを確認することはできません。また、多くの利点なしで__dict__から1つのエントリを削除するだけで、okと感じません。誰かがこれを詳細にクリアすることはできますか?

+1

なぜ*アクセスできますか? 'from b import x'を使うことによって、現在の名前空間に' x'を追加したかっただけです。 'b'のすべてが必要な場合は、' import b'を追加してください。 – jonrsharpe

+0

@jonrsharpe私は 'import b 'を使うとbにアクセスすることができると理解していますが、私が直接使用したい場合でもモジュール名を(Pythonで)アクセス可能にすることは論理的ではありませんモジュールの属性?これが実行時のオーバーヘッドは何ですか? – hunch

+2

まあ*明示的なものは暗黙的なものよりも優れています。別のものについては、参考文献にはhttps://docs.python.org/3/reference/simple_stmts.html#the-import-statementという記載があります。それは* "モジュール名をアクセス可能にする*" *ではないことからではなく、最初からアクセス可能にしません。 – jonrsharpe

答えて

1

これはシンタックスのためです。含まれているモジュールではなく、指定した名前だけがインポートされます。モジュール自体が必要な場合は、import bを実行してください。

+0

私はimport bを使用すると、bへのアクセス権を得ることができると理解していますが、理由はいくつかありますモジュールの直接の属性を使用したい場合でも、モジュール名を(Pythonで)アクセス可能に保つことは論理的ではありませんか?これが実行時のオーバーヘッドは何ですか? – hunch

関連する問題