Python 개발자로서 저는 최근 코드의 루프가 예상대로 반복되지 않는 이상한 문제에 직면했습니다. 타임스탬프가 범위에 속하는지 확인하기 위해 날짜 범위 목록을 반복하는 기능이 있었습니다.
내 코드는 다음과 같습니다.
def check_timestamp(timestamp):
date_ranges = generate_ranges()
for range in date_ranges:
print("First loop")
for range in date_ranges:
print("Second loop")
def generate_ranges():
return (
{'start': date1, 'end': date2}
for date1, date2 in zip(start_dates, end_dates)
)
일부 디버깅 후 생성기 표현식 대신 목록을 반환하도록 generate_ranges()
를 변경했을 때 문제가 사라진 것을 확인했습니다.
def generate_ranges():
return [
{'start': date1, 'end': date2}
for date1, date2 in zip(start_dates, end_dates)
]
생성기 표현식이 루프 사이에 예상치 못한 동작을 도입한 것 같습니다. 평가를 목록에 강제로 적용하여 문제를 해결했습니다.
따라서 Python 코드에서 루프가 예상대로 반복되지 않는 경우 미묘한 버그를 유발할 수 있는 생성기 표현식이 있는지 확인하세요. 이를 표준 목록/튜플로 변환하는 것은 반복자 문제를 배제하는 쉬운 방법입니다.
다른 질문이 있으면 알려주세요!