2012-05-27 8 views
6

저는 여러 변수가 만들어지는 Python 스크립트에서 함수를 사용하고 있으며, 다른 함수에서이 변수를 사용하고 싶습니다. 나는 이것에 대해 global을 사용하는 것을 생각했지만 잘못된 방법이라고 생각했습니다.모든 변수를 전역 변수로 만들기

그럼 다른 함수의 함수에서 변수를 만드는 가장 좋은 방법은 누구에게 말해 줄 수 있습니까?

답변

8

변수를 class으로 구성하십시오. 하나의 함수로 클래스를 인스턴스화 한 다음 필요에 따라 인스턴스를 전달하십시오.

엄지 손가락 : 글로벌 무언가를 어떤 시점에서 좋은 해결책으로 생각한다면 그렇게하지 마십시오. 항상 더 좋은 방법이 있습니다.

2

당신은 "네임 스페이스"개체를 만들 수 있습니다 - 분명 글로벌 네임 스페이스를 유지하기위한 목적으로 네임 스페이스로 기능 객체 : 그러나

class namespace(): 
    pass 

global_data=namespace() 

def add_attributes(obj): 
    obj.foo="bar" 

add_attributes(global_data) 
print (global_data.foo) #prints "bar" 

를이 글로벌 키워드를 사용하는 것보다 미미한 낫다 . Paul이 언급 한 것처럼 실제로 여기 수업을 원합니다.

2

변수를 함수의 속성으로 선언하십시오.

def f1(): 
    f1.a=100 
    f2.b=200 

def f2(): 
    print(f1.a,f2.b) 

f1() 
f2() 

출력 :

100 200 
+0

이 일을하는 대신 클래스의 장점이 있습니까? – beardc

+0

@ BirdJaguarIV 객체 지향 접근 방식이 좋지 않거나 익숙하지 않은 경우 사용할 수 있습니다. –

관련 문제