0

インポートされたモジュールの関数からメイン アプリ関数を呼び出す必要があります。

インポートには独自の名前空間があるため、「グローバル名...なんとか、何とか..定義されていません」という名前エラーが出力されます。

main.py :

from imported import importedFunction

def mainFunction():
    print "MainFunction"

importedFunction()

import.py :

def importedFunction():
    print "importedFunction"
    mainFunction()

importlib メソッドは必要ですか? 修正するのを手伝ってください。

4

2 に答える 2

2

名前空間とは何かを正確に理解していないと思います。

たとえば、インポートされたモジュールで名前空間を使用するには、次のようにします。

from imported import importedFunction as func

そして、コードの残りの部分で、インポートされた関数を単に として参照funcできます。

さらに、コードでは、モジュールにそのままmainFunction含まれていないモジュールから呼び出そうとしmainFunctionています。インポートしているという事実により、importedFunctionモジュール内の関数にアクセスできません。これは、独自のモジュール内でまだ動作しているためです。 .

インポートされたモジュールにインポートしない限りmainFunction、無限ループが作成されます....そして、それは通常眉をひそめます。

したがって、「インポートされたモジュールの関数からメインアプリ関数を呼び出す必要があります」と答えるために。モジュールをインポートされたモジュールにインポートしない限り、それは不可能です...

于 2013-06-10T08:10:06.630 に答える
1

そこに関数をインポートできますが、必ずしも最善の解決策ではありません。

インポートされた.py:

def importedFunction():
    print "importedFunction"

    from main import mainFunction
    mainFunction()

関数からインポートする必要mainがあります。そうしないと、インポートにループが発生するためです。

于 2013-06-10T08:12:16.310 に答える