2013-04-08 2 views
2

나는 입력에 기반하여 정의 된 함수 keep_running을 만들고 싶습니다.이 함수는 실행 시간이나 반복 횟수에 민감합니다. 나는 함수의 외부 카운터를 감소시키는없이 반복 할 수있는 파이썬 방법을 마련 할 수없는 것 예컨대 :파이썬에서 while 루프를 종료하는 함수는 무엇입니까?

def keep_running(ttl): 
    return ttl > 0 

ttl = 1 
while keep_running(ttl): 
    do_stuff() 
    ttl -= 1 

기능 keep_running 내에서 바람직하게는 완전히이 작업을 수행 할 수있는 더 나은 방법이 있나요?

답변

2

상태를 관리하는 가장 좋은 방법은 아마도 클래스 내부 일 것입니다. ttl 값을 가진 loop_context 개체를 초기화 할 수 있으며 루프 조건은 loop_context.keep_running()이됩니다.

2

귀하의 요구 사항에 대해 확신하지 못합니다. 그러나 iterator가 유용 할 수 있습니다. 반복자를 사용하여, 그것은 수 :

>>> def keep_running(ttl): 
    while ttl>0: 
     yield ttl 
     ttl -= 1 
>>> for one_round in keep_running(3): 
    print(time.time()) 

결과는 다음과 같습니다

1365464545.465 
1365464545.495 
1365464545.505 
관련 문제