2016-06-21 3 views
-3

나는 여러 가지 다른 작업을 처리 할 수있는 파이썬 모듈을 작성 중이다. 이러한 작업은 그 코드 블록이 많은 지역 변수를 생성합니다 같은 기능에 넣어없이 모든 작업 부문의 코드 블록을 복사하지 않는 가장 좋은 방법은 무엇 다음단일 모듈에 재사용 가능한 코드

if __name__ == '__main__:' 
    task == sys.argv[1] 
    if task =='task1': 
     code block1 
     code block2 
     ... 
    if task == 'task2': 
     code block2 
     .... 
    if task == 'task3': 
     some code 
     code block1 
     ...... 

으로 코드의 특정 부분을 공유 할 수 있습니다.

업데이트 : 나는 abc.m에서 코드 블록을 실행하여 코드에 abc.m 행을 배치하는 MATLAB의 무언가를 생각하고 있습니다. 함수 대신 다른 모듈에 저장된 코드 블록을 실행할 수있는 방법이 있는지 궁금합니다. (가능한 모든 부작용을 최소화하는 것이 더 좋음)

+0

함수가 많은 지역 변수를 생성하는 경우 왜 문제가됩니까? 함수 범위 밖의 변수가 필요하다는 것을 의미합니까? 당신은 그들을 돌려 보낼 수 있습니다. – syntonym

+1

왜 당신은 그것들을 기능에 넣고 싶지 않을까요? 문자 적으로 그것들의 요점입니다. – casraf

+2

분명한 선택은 기능입니다. 왜 거기에 기능을 사용하고 싶지 않아? 우리가 당신의 문제를 더 잘 이해할 수 있도록 좀 더 구체적인 예를 보여주십시오. – brandizzi

답변

1

다른 사람들이 말했듯이 가장 좋은 해결책은 아마 함수를 사용하는 것입니다. 한 함수에서 다른 함수로 많은 변수를 전달해야하는 경우이 접근법을 사용할 수도 있습니다.

if __name__ == '__main__:' 
    task == sys.argv[1] 

    if task == 'task3': 
     some code 

    if task =='task1' or task == 'task3': 
     code block1 

    if task == 'task2': 
     code block2 

그러나 다른 해결책을 생각해 보는 것이 좋습니다. 코드 블록은 서로 독립적으로 작동하는 특정 작업을 나타내야합니다. 필자가 제시 한 솔루션은 추악 해지고 코드 블록이 어떤 변수를 제공하는지 추적하는 것은 어려울 것입니다.

관련 문제