検索

ホームページ  >  に質問  >  本文

[Python 初心者] ネストされたパッケージのインポートについて質問されました

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

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

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

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

リーリー

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

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

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

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

phpcn_u1582phpcn_u15822707日前776

全員に返信(2)返信します

  • 大家讲道理

    大家讲道理2017-06-30 09:56:57

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

    返事
    0
  • 某草草

    某草草2017-06-30 09:56:57

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

    リーリー

    写真に示すように:

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

    返事
    0
  • キャンセル返事