2013-11-22 4 views
2

는 공통 모듈과공유 및 확장 열거 형 목록에 파이썬?

it defines KEY_1, KEY_2. 

당신은 공통 모듈을 사용하고

module_a defines KEY_A1 KEY_A2 
module_b defines KEY_B1 KEY_B2 

내가 모든 키의 목록을 구성 할 그런 방법으로 그것을 확장하는 다른 모듈을 가지고 있다고 가정 어딘가 :

[KEY_1, KEY_2, KEY_A1, KEY_A2, KEY_B1, KEY_B2] 

그리고 어디에서나 목록에 액세스 할 수 있습니다.

공용 모듈에서 전역으로 액세스 할 수있는 목록을 정의하여 시작할 수 있습니다.
그러나 다른 모듈의 값을 삽입하려면 어떻게해야합니까? module_a.py - -

module_a.py 다른 코드에서 여러 번 가져 오는 경우

import common_module 

KEY_A1 = 10 
KEY_A2 = 11 

common_module.the_list.append(KEY_A1) 
common_module.the_list.append(KEY_A2) 

defs.. 
classes.. 

woudln't 여러 번 추가 얻을 KEY_A1?

+0

같은 런타임에는 발생하지 않는다고 생각합니다. – aIKid

답변

1

아니요, 모듈의 코드는 모듈을 처음 가져올 때 한 번만 실행됩니다. 그것이 sys.modules 사전의 목적입니다. 이미 가져온 모듈을 기록합니다. 모든 수입품은 먼저 sys.modules을 확인합니다. 가져 오는 모듈의 이름이 이미 해당 dict의 키인 경우 해당 모듈에서 모듈 개체를 검색합니다. 그렇지 않으면 모듈의 파일은 이 실행되어이 실행되어 모듈 객체가 생성되고 sys.modules은 새 모듈 이름 -> 모듈 객체 쌍을 기록하도록 업데이트됩니다 (가져올 모듈의 이름이 그 dict에 없습니다).