2013-08-30 5 views
2

내 코드에 문제가 있습니다변수를 함수에서 주 프로그램으로 다시 보내려면 어떻게해야합니까?

사용자 코드로 만든 파일의 이름을 내 주 프로그램으로 되돌리기를 원하지만 어떻게 파일 이름을 반환했는지 모르겠습니다. 내가 코드 어디에서나 사용할 수있는 변수로 파일을 설정하는 방법,

#File Creator 
def Create(filename): 
    UserFile = open(str(filename), "wt") 
    file = (str(filename)) 
    return file 

#Main program 
Create(input("filename: ")) 
print(file) 

내가 파이썬 3.3을 사용하고 있습니다 : 작동하지, 여기에 코드?

당신은 global을 사용할 수 있습니다 나는 file = Create(input("filename: "))을 추가하는 방법에 대한 생각했지만 다른 방법

답변

0

가 있는지 확실하지 않습니다 :

def Create(filename): 
    global file 
    UserFile = open(str(filename), "wt") 
    file = (str(filename)) 
    #return file -- I commented this since there is no real reason to return now with a global 

file 이제 전역 범위에있을 것입니다.

개인적으로는 귀하의 방법이 file = Create(input("filename: ")) 인 것이 가장 좋습니다. 이와 같은 전역을 사용하면 많은 사람들이 눈살을 찌푸리게되며 매우 자주 회피 될 수 있습니다.

+0

고맙습니다. 전 세계를 보았지만 시도했을 때 작동하지 않았습니다. 왜 지금은 볼 수 있습니까? 다른 방법은 나에게 잘 작동하지 않습니다. 파일을 변경할 수있는 방식으로 호출해야하기 때문입니다. 명령은 – Jaffar

+0

이라고 불리며 실제로 변수를 사용하는 코드 이전이 아니라 함수의 맨 처음에'global'을 사용하는 것이 좋습니다. – chepner

3

어떻게 파일을 반환하지 않았습니까? 코드에는 몇 가지 실수가 있습니다. - 전역 변수가 아주 나쁜 프로그래밍 방법 모두에 의해

# File Creator 
def create(filename): 
    userFile = open(filename, "rw") 
    return userFile # this is a file object 

# Main program 
theFile = create(input("filename: ")) 
print(str(theFile)) # string representation of the file object 

, 그들에게 진짜 필요가 없습니다 경우 전역 변수를 사용 피하십시오 :이 시도, 그것은 트릭을 할해야합니다. 이 간단한 경우에는 충분히 구조화 된 프로그램에서 매개 변수 및/또는 반환 값으로 값을 전달하는 것으로 충분합니다.

관련 문제