모듈은 간단하지만 약간 시간 소모적 인 초기화를해야하는 상황이 있습니다. 최종 조건 중 하나는 초기화에 의해 채워지는 한 쌍의 목록입니다. 저를 괴롭히는 것은 기본적으로 상수로 의도 된 목록의 역할과 실제로 그것을 초기화해야하는 필요성간에 충돌이 있다는 것입니다. 캐주얼 독자가 일반적으로 상수가 차지하는 위치에 그 목록을 볼 수 그들을 비어있을 것으로 예상 할 수 있기 때문에파이썬에서 모듈 수준의리스트를 초기화하는 가장 확실한 방법
CONSTANT_LIST = []
DIFFERENT_LIST = []
for item in get_some_data_slowly():
if meets_criteria_one(item):
CONSTANT_LIST.append(item)
continue
if meets_criteria_two(item):
DIFFERENT_LIST.append(item)
:
는이 같은 불안 코드를 작성을 느낍니다. 그래서
CONSTANT_LIST = [i for i in some_data() if criterion(i)]
내가 그려 두 개의리스트를 필요로하는 것을 제외하고 ... : 나는 지능형리스트로이 쓸 수있는 경우
OTOH, 나는 같은 후드 아래 사실로 확인 될 것 동일한 (약간 시간이 많이 소요되는) 소스에서 두 개의 목록 내장으로 코드를 눈에 띄게 느리게 만듭니다.
__private_const_list = None
__other_private_list = None
def public_constant_list():
if __private_const_list: return __private_const_list
# or do the slow thing now and fill out both lists...
# etc
def public_other_const_list():
# same thing
을 기본적으로 세션 당 1 종류의 바보 가능성이 사용 빈도 이후입니다 :
이 악화하려면, 응용 프로그램이 방법 뒤에 정수를 숨기는 것은 그런 것이다.
로켓 과학 문제는 아니지만 파이썬 감각은 전혀 어지럽지 않습니다. 여기에 적절한 비단뱀 무늬가 뭐지?
세트 over_think = 0의
elif
를 사용을 설명하는 주석을 사용 – theodox