[Python 初心者] ネストされたパッケージのインポートについて質問されました
phpcn_u1582
phpcn_u1582 2017-06-30 09:54:57
0
2
790

まず、パッケージのディレクトリ構造を見てください:

一番外側のパッケージの名前は Msgnew で、これには init ファイルが含まれています。get というモジュールと Msg というサブパッケージがあります。Msg サブパッケージに入ると、init ファイルと、 2 つのモジュールがあり、1 つは Sendmsg と呼ばれ、もう 1 つは Receivemsg モジュールと呼ばれます

ここで、サブパッケージ内の Sendmsg モジュールをインポートし、関数の 1 つを使用したいと思います。
ところで、Sendmsg モジュールを紹介します。図に示すように、実際には 3 つの関数です。

インポート プロセスのコードは次のとおりです:

リーリー

コード 1 とコード 2 は次のとおりです。
コード 1 の実行結果は次のとおりです。

次に、コード 1 をコメント アウトして、コード 2 を実行します。結果は次のようになります。

これはよくわかりません、

#赤いボックス内の 2 つのコードは等価ではありませんか?
私の意見では、これら 2 つは同じ意味であるはずですが、なぜ一方が間違っていて、もう一方が正しいのでしょうか?

phpcn_u1582
phpcn_u1582

全員に返信(2)
大家讲道理

これらはすべてサブモジュールですが、実装ロジックは実際には異なります。そのため、最終的なインポートはパーサーに Sendmsg ファイルの場所を指示する Python文件,而并非一个模块目录,所以代码二中import Sendmsg部分才是真正的引入了这个Python文件,而前面的from Msgnew.Msg でなければならないという事実につながります。

いいねを押す +0
某草草

私は自分が遭遇した問題がどこにあるのかを知っています。
インポートがモジュールではなくパッケージである場合、内部のモジュールを一緒に直接インポートしたい場合は、パッケージのinitファイルに次のように記述する必要があります:

リーリー

写真に示すように:

次回実行すると成功します!

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート