안녕하세요 파이썬문법 클래스, 제너레이터에 대해 질문드립니다!
244
작성한 질문수 23
RESETS = [
False, False, False, True, False, True, False,
False, False, False, False, False, False, False]
def check_for_reset():
# 외부 이벤트를 폴링한다
return RESETS.pop(0)
def announce(remaining):
print(f'{remaining} 틱 남음')
class Timer:
def __init__(self, period):
self.current = period
self.period = period
def reset(self):
self.current = self.period
def __iter__(self):
while self.current:
self.current -= 1
yield self.current
#
def run():
timer = Timer(4)
for current in timer:
if check_for_reset():
timer.reset()
announce(current)
run()
결과 :

안녕하세요!! 파이썬 class 및 제너레이터에 대해 질문드립니다!!
위 코드를 보면 timer라는 인스턴스가 루프를 돌면서 announce를 호출 하는 코드인데
이해가 안되는 점이 왜 RESETS 리스트의 데이터가 pop이 되는 걸까요???
for문이 돌고는 있지만 실질적으로 check_for_reset 함수는 호출되고 있지 않자나요??
근데 결과를 보면 for문 돌면서 계속 RESETS 리스트의 데이터가 pop되고 있는 게 신기하네요
class iter메소드가 아닌 그냥 for문 돌리면 그냥 일반적인 예상대로 RESTS리스트의 데이터는 그대로 존재하는데 말이죵;;
Timer라는 클래스랑 RESETS 리스트랑 코드상 직접적인 관계가 없는데 같이 맞물려 동작하는게 이해가 안되네요 ;;;
어떠한 원리에 의해서 위와 같이 동작하는걸까요!!??
답변 1
0
안녕하세요.
아래 코드에서 for 반복 시마다 check_for_reset() 함수를 호출하고 계시니, 말씀하시는 대로 동작하는 것이 맞습니다.

Timer를 iterator 객체로서 구현하셨고, 구현하신 대로 동작하고 있습니다. 아래와 같이 for 순회 시에 timer 객체를 list(timer)로 감싸시면, 동작이 달라질 것입니다.

Iterator/Generator에 대해서 차근차근 정리해보세요.
화이팅입니다. :-)
안녕하세요.
0
51
1
[OneToOne Field Demo] get_user_model() 메서드를 활용해야 하는 이유?
0
275
1
useEffect 훅에서 else 유무에 따른 결과
0
211
1
useAxios 훅의 dependency array 설정
0
245
1
useEffect에서 변수 업데이트 관련 질문
0
382
1
rest_framework.generics.CreateAPIView의 model 속성 유무
0
268
1
bootstrap4
0
471
4
리뉴얼 강의가 오픈이 되면 기존 강의는 더이상 못보는걸까요
1
365
1
admin form에서 앞선 필드 선택 후 다른 필드 select widget 구성하는 방법
0
574
3
useState는 필수일까요?
0
263
1
python manage.py makemigrations instagram 시 created_at default 오류가 발생합니다.
0
600
4
Django allauth를 사용한 소셜 로그인 시 에러
0
655
1
프로젝트명 변경 뒤, 디버그툴바+디버그모드 사용 시 에러
0
556
2
useLocalStorage() 함수 사용여부
0
229
1
django에 LOGIN_URL = '/accounts/login/'의 의미?
0
449
1
리듀서의 의미 재확인
0
430
1
simple-jwt Refresh Token 사용 노하우
0
899
2
docker compose 를 통한 배포 관련 오류 문의
0
673
1
파이썬 속도 장고 관련 궁금한게 있습니다.
0
365
1
is_like_user
0
233
1
related_name 오류
0
275
1
re_path 오류
0
259
1
re_path url
0
251
1
No post matches the given query
0
661
2





