2016-10-12 2 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

관련 문제