2014-10-29 2 views
4

내가 두 파이썬 파일수입자가 수입자의 변수를 가져올 수있는 방법이 있습니까?

# importer.py 
parameter = 4 
import importee 

# importee.py 
print parameter 

을 가지고 말할 수있는 I 또는 방법 importee.py 액세스 importer.pyparameter 내가 할 수있는? 나는 주위에 추한 일을 사용하고

sys

# importer.py 
import sys 
sys.parameter = 4 
import importee 

# importee.py 
print sys.parameter 

너무 추한를 빌려 (및 오염). 더 나은 솔루션을 찾고 있습니다.

# importer.py 
import importee 
importee.call_me(4) 

과 :

+2

그러면 일반적으로 디자인 문제의 징후 인 순환 수입이 발생합니다. 왜 이럴 필요가 있다고 생각하니? – IanAuld

+0

@IanAuld 필자의 예에서와 같이, 일부 "매개 변수"를 사용하여 ** importee ** 모듈을 가져 오기를 희망합니다. –

+1

무엇을 할 계획입니까? –

답변

4

난 당신이 달성하고자하는 생각을 달성하기 위해 권장되는 방법은, 예를 importee에서 함수를 선언하고이를 호출하는 것입니다

# importee.py 
def call_me(parameter): 
    print(parameter) 

은 피하는 것이 바람직하다 전역 범위에서 모든 작업을 수행합니다. 그리고 특히 print() 아무것도 입력하지만 당신의 최소한의 예제가 실제 사용 사례와 일치하지 않는다고 생각합니다 :).


그런데, 당신이 언급 한 추악한 작업은 실질적으로 별도의 구성 모듈을 사용하는 것과 같습니다. 예를 들면 :

# importer.py 
import config 
config.param = 4 
import importee 

+

# importee.py 
import config 
print(config.param) 

+

# config.py 
param = 7 # some default 

그것은 여전히 ​​아무 가까이 꽤 있지만, 적어도 시스템 모듈을 엉망으로 방지 할 수 있습니다.

+1

+1 두 가지 다른 합리적인 옵션 (IMHO)을 제공합니다. 나는''import config'' 접근법이 꽤 좋은 것을 발견하고, 어떤 시나리오에서는 생명을 구할 수 있습니다. 첫 번째 권장 방법이 불가능할 때만, ofc. – MariusSiuram

+0

두 가지 솔루션 모두에 관심이 있습니다. 첫 번째 것을 뽑아. 고마워요! –

관련 문제