2012-02-20 4 views
1

다른 함수에서 2 개의 반환 된 변수를 사용하여 더 많은 패딩 텍스트를 외부 텍스트 파일에 쓰는 함수가 있습니다.적절한 '인수'를 사용하여 함수를 호출하는 방법

내가 텍스트 파일에 쓰기를 사용하고 아래 코드는하지만 그것은 순간 프로그램

def function1() 
# Some code 

def function2() 
# Some code 
return startNode 
return endNode 

def function3(var) 
# Some code 
return differentVariable 

def createFile(startNode, endNode): 
    outputFile = open('filename.txt','w')     # Create and open text file 
    start = chr(startNode +65)        # Converts the int to its respective Char 
    end = chr(endNode +65)         # Converts the int to its respective Char 
    outputFile.write('Route Start Node: ' + start + '\n') # e.g Route Start Node: B 
    outputFile.write('Route end node: ' + end + '\n')  # e.g Route End Node: F 
    outputFile.write('Route: ' + Path + '\n')    # e.g Path: B,A,D,F 
    outputFile.write('Total distance: ' + Distance)   # e.g Total Distance: 4 
    outputFile.close          # Close file 


if __name__ == "__main__": 
    function1() 
    function3(function2()) 
    createFile(# Don't Know What Goes Here ) 

의 맨 아래에있는 if 문 실행시에 자동으로 호출되고 난 단지 수 있어요 수동으로 호출하고 1은은 StartNode 값이고 5는 말단 노드 값

입니다하지만 함수를 호출하는 if 문에 createFile(startNode, endNode)을 넣어 생각한다면, 그것은 나에게 NameError: name 'startNode' is not defined 및 알려줍니다 곳 createFile(1,5)를 입력하여이 기능을 실행합니다 다음 분명히 endNode에 대해서도 동일한 오류가 발생합니다.

값을 직접 입력하지 않아도 함수를 올바르게 호출하는 방법은 프로그램의 시작 부분에있는 startNode 및 endNode 값에 따라 변경 될 수 있으므로 어떻게해야합니까?

+0

그러나 올바른 값이 온다에서 대신 튜플을 반환해야합니까? 그것들은 기능 1, 2 또는 3의 결과입니까? 그렇다면 왜 함수의 반환 값을 캡처하여 createFile에 전달해야합니까? –

+0

'function1()''function2()'과'function3()'에 대한 코드를 게시하십시오. – aganders3

답변

2

'그래서 당신이 원하는 것은 함수에서 값을 반환하는 대신 저장할입니다 귀하의 예를 들어 function2에서 완료했습니다. 실행은 첫 번째 반환 값에서 함수를 종료하고 두 번째 반환 값으로 설정하지 않습니다. 에이드가 설명한대로 function2를 호출 할 때 수행, 그리고

def function2(): 
    # set the values of startNode and endNode here 
    # e.g. 
    startNode = 1 
    endNode = 5 
    return (startNode, endNode) 

:

if __name__ == "__main__": 
    startNode, endNode = function2() 
    createFile(startNode, endNode) 
0

일부 값에는 startNodeendNode을 할당해야합니다. 그들은이 개 이전 기능으로 복귀하는 경우

는 :

if __name__ == "__main__": 
    startNode = function1() 
    endNode = function3(function2()) 
    createFile(startNode, endNode) 
+0

function2() 함수는 startNode와 endNode를 모두 – Daniel

+1

으로 반환하므로'createFile (startNode, endNode)'호출 전에'startNode, endNode = function2()'가 있어야합니다. –

1

내가 함수를 호출하기 위해 if 문에 createFile(startNode, endNode)을 넣어 생각한다면, 그것은 나에게 분명히 NameError: name 'startNode' is not defined

를 알려줍니다 그 시점에서 바라 보는 모든 것이 이것입니다.

if __name__ == "__main__": 
    function1() 
    function3(function2()) 
    createFile(startNode, endNode) 

마지막 호출이 성공하도록하려면 이러한 변수를 어딘가에 정의해야합니다.

이전에 이러한 함수 호출을 사용하여 값을 초기화하는 것으로 추측하고 있습니다. 함수 내부의 변수는 대개 로컬이기 때문에 startNodeendNode을 "설정"할 수는 있지만 작동하지 않습니다.

if __name__ == "__main__": 
    startNode = function1() 
    endNode = function3(function2()) 
    createFile(startNode, endNode) 

을 그리고 기능은 다음과 같아야합니다 : 당신은 당신과 같이 두 개의 변수를 반환 할 수

def function1(): 
    # some computations 
    return startNode 

def function3 (param): 
    # more computations 
    return endNode 
관련 문제