2016-10-12 10 views
0

を使用して関数を呼び出すことができ、私はmain()関数を呼び出して、このモジュールを持っている:は、どのように私は、インポートされたモジュール

## This is mymodules ## 
    def restart(): 
     r = input('Do you want to build another configuration file?\n1. Yes\n2. No\n') 
     if r == '1': 
      main() 
     elif r == '2': 
      os.system('pause') 

メイン()このモジュールをロードする別のスクリプトです。しかし、main()は定義されていません。基本的にこれは私が私のテストで持っているものです。

import mymodules as my 
def main(): 
    print('good') 

my.restart() 

これは私が定義された()my.restart()がメインを呼び出すことができるようにしたい実行されている場合。

+0

'main()'はあなたの最初のモジュールの名前空間にありません。あなたはそれをインポートすることができますが、一般的には注意しなければ循環インポートを避けるべきです(http://stackoverflow.com/questions/744373/circular-or-cyclic-imports-in-python)。 –

答えて

2

このようなコードでは、単にmain関数を引数として再実行関数に渡すことができます。

など。

def restart(function): 
    r = input('Do you want to build another configuration file?\n1. Yes\n2. No\n') 
    if r == '1': 
     function() 
    elif r == '2': 
     os.system('pause') 

そして:

import mymodules as my 
def main(): 
    print('good') 

my.restart(main) 

これは、しかし、このような単純な例でのみ動作callback

として知られている人気のデザインパターンです。より複雑なものを書く場合は、おそらくオブジェクトを使用してそのオブジェクトを渡したいと思うでしょう。そうすれば、単一のオブジェクトからすべての複数のメソッド/関数を呼び出すことができます。

+0

これは完璧に機能しました!ありがとうございました! – Theo2889

関連する問題