2012-06-15 2 views
2

가 여기에 내가 무엇을 생각하고 있어요에 대한 예입니다 : succefully은 "경로"를 완료하면 (check_args 후 말할 수Python : '전역'을 사용하지 않고 다른 함수의 변수에 액세스하는 방법이 있습니까?

def check_args(): 
    if len(sys.argv) < 2: 
     sys.exit('Reason') 
    if not os.path.exists(sys.argv[1]): 
     sys.exit('ERROR: Folder %s was not found!' % sys.argv[1]) 
    global path 
    path = sys.argv[1] 

) 변수는 보편적 인 의미가있다 - 당신은 사실상의 변수로 다른 기능에서 사용할 수 있습니다 .

"경로"에 액세스 할 수있는 방법이 있다면 생각하고 있습니다. check_args.path?

python v3에서는 어떻습니까?

+0

도를 클래스를 사용하지 않고? – moooeeeep

+2

이것은 단지 예제 일지 모르지만 이것이 실제 코드와 가까운 경우 명령 행 구문 분석 라이브러리 (argparse는 파이썬에 포함될 가장 최근의 것)를 조사하는 것이 좋습니다. – mgilson

+0

코드를 함수에 넣지 않아도됩니다. 그냥 모듈의 상단 근처에 정의하여 전역'path' 변수를 정의하십시오. 당신은 @ lanzz의 답처럼 함수의 속성으로 저장할 수 있습니다. 그러나 함수는 전역 모듈 객체이므로 거의 동일합니다. – martineau

답변

3

파이썬 함수는 객체입니다. 당신은 당신이 그들을 원하는대로 사용자 정의 속성을 정의 할 수 있습니다 : if __name__ ...를 사용하는 경우

def a(): 
    a.test = 123 

a() 
a.test # => 123 
+2

함수에 대한 속성을 필요로하는 것은 대개 클래스를 원한다는 표시이며, 아마도'__call__'을 사용합니다. –

0

당신은 단순히 값

def check_args(): 
    if len(sys.argv) < 2: 
     sys.exit('Reason') 
    if not os.path.exists(sys.argv[1]): 
     sys.exit('ERROR: Folder %s was not found!' % sys.argv[1]) 
    path = sys.argv[1] 
    return path 

my_path = check_args() 

또는 반환 할 수 있습니다

if __name__ == '__main__': 
    my_path = check_args() 
    results = do_something(path) 
관련 문제